日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

平衡二叉查找树

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

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

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

  • 總結

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

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。