日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

平衡二叉查找树

發(fā)布時間:2024/7/19 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 平衡二叉查找树 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

紅黑樹-高級的二叉查找樹

  • 平衡樹和非平衡樹
  • 紅黑樹特征:結(jié)點都有顏色,插入和刪除結(jié)點時要遵循紅黑規(guī)則;
  • 紅黑規(guī)則
  • 每一個結(jié)點不是紅色就是黑色;
  • 跟總是黑色的;
  • 如果結(jié)點時紅色的,則它的子節(jié)點必須是黑色的;
  • 從根到葉子結(jié)點的每條路徑,必須包含相同的黑色結(jié)點。
  • 修正方法
  • 改變結(jié)點顏色
  • 旋轉(zhuǎn)
  • C++函數(shù)庫包含的紅黑樹
  • #include<set>
  • #include<map>
  • C++實現(xiàn)紅黑樹,主要類如下
  • Class RedBlackTree
  • Class RedBlackNode
  • NullNode
  • Header
  • 一個空的紅黑樹RedBlackTree.h #pragma once #ifndef RED_BLACKT_REE_H_ #define RED_BLACKT_REE_H_//模板類聲明 template <class comparable> class RedBlackTree; template <class comparable> class RedBlackNode;//類定義 template <class comparable> class RedBlackTree { private:RedBlackNode<comparable> *header; //紅黑樹頭結(jié)點RedBlackNode<comparable> *nullNode;//空結(jié)點public:enum {RED,BLACK}; //枚舉顏色,放在RedBlackTree類內(nèi)部;RedBlackTree(const comparable& h);~RedBlackTree(); };template <class comparable> class RedBlackNode {comparable element;RedBlackNode* left;RedBlackNode* right;int color;RedBlackNode(const comparable& ele=comparable(),//comparable類型是傳遞進來的類型,缺省參數(shù)賦初值是需要使用自己的類型,注意寫法。RedBlackNode *l=NULL,RedBlackNode* r=NULL,int c=RedBlackTree<comparable>::BLACK): element(ele),left(l),right(r),color(c) //成員函數(shù)賦初值{}//友元類,RedBlackTree類可以方位RedBlackNode類的默認的private成員數(shù)據(jù),注意在哪個類中聲明友元friend class RedBlackTree<comparable>; }; #endif//類成員函數(shù)定義 template<class comparable> RedBlackTree<comparable>::RedBlackTree(const comparable & h) {//new創(chuàng)建節(jié)點,存儲指向根節(jié)點的指針,不存儲其他數(shù)據(jù)nullNode = new RedBlackNode<comparable>();//使用缺省參數(shù)構(gòu)造,nullNode->left = nullNode;nullNode->right = nullNode;//紅黑樹頭指針,指向根節(jié)點,頭指針也是一個結(jié)點,也需要使用new創(chuàng)建,只是其不存儲數(shù)據(jù),僅作存儲根節(jié)點,用于指向根節(jié)點。header = new RedBlackNode<comparable>(h);header->left = nullNode;header->right = nullNode; }template<class comparable> inline RedBlackTree<comparable>::~RedBlackTree() {delete nullNode;delete header; }

  • 總結(jié)

    以上是生活随笔為你收集整理的平衡二叉查找树的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。