1. 程式人生 > >霍夫曼樹 二三樹 紅黑樹 B樹 B+樹

霍夫曼樹 二三樹 紅黑樹 B樹 B+樹

傾斜 節點 存在 ecn nbsp rod htm com 霍夫曼樹

  • 霍夫曼樹:

特點:帶權路徑長度最短,∑(每個節點的權重)*(每個節點的層數)

生成:每次合並權值最小的兩個節點(子樹)建立二叉樹,將合並後的子樹作為新節點,權值為節點(子樹)權值之和

  • 二三樹:

特點:平衡查找樹,每個葉子節點為空且層數相同,查找時間復雜度O(lgn)

生成:2節點包含一個key和兩個子節點(left->key<key<right->key),3節點包含兩個key和三個子節點(left->key<key1<middle->key<key2<right->key);在(倒數第二層)2節點插入則直接加入,在(倒數第二層)3節點插入則需要進行節點分裂,並可能層層向上傳播分裂

  • 紅黑樹:

特點:相對最平衡的二叉樹,每個葉子節點為空且路徑包含相同數量的黑節點,紅節點不連續存在且向左傾斜(可以把紅節點與右側黑節點看成一個3節點),查找時間復雜度O(lgn)

生成:根節點為黑色,嘗試插入紅節點,如果插入後不再平衡則進行左旋/右旋,如果插入後兩個子節點都為紅色則顏色反轉

  • B樹:

特點:根節點包含1~m-1個key,至少有兩個子節點,非根節點包含m/2~m-1個key,至少有m/2+1個子節點

生成:在葉子節點插入,如果節點滿則分裂節點,一個key加入父節點,如果key滿則遞歸向上

  • B+樹:

特點:類似B樹,但所有key與data都在葉子節點分布

生成:類似B樹

參考文獻:

https://blog.csdn.net/aircattle/article/details/52347955

https://www.cnblogs.com/vianzhang/p/7922426.html

http://www.cnblogs.com/yangecnu/p/Introduce-B-Tree-and-B-Plus-Tree.html

http://www.cnblogs.com/yangecnu/p/Introduce-2-3-Search-Tree.html

http://www.cnblogs.com/yangecnu/p/Introduce-Red-Black-Tree.html

https://blog.csdn.net/panglinzhuo/article/details/79437402

霍夫曼樹 二三樹 紅黑樹 B樹 B+樹