1. 程式人生 > 其它 >紅黑樹(RBT tree)詳解

紅黑樹(RBT tree)詳解

黑樹(Red Black tree)

一、紅黑樹的一些性質

1、紅黑樹是一顆自平衡的二叉查詢樹,通過給每個節點相應的顏色位(Red or Black)來保證整個的樹的平衡。

2、紅黑樹在插入和刪除時不像AVL樹那樣經常的需要調整,平衡性要求沒有AVL樹高。

3、根節點必須為黑色紅節點的孩子必須為黑色。

紅黑樹示例:

4、紅黑樹中空指標也是節點。

5、對於任何一個節,從該節點到其孩子中都包括相同數目的黑色節點,這點是保證平衡性的重要條件

6、空指標代表的也是黑色節點。

7、由上可知紅黑樹的高度對多為:log⑵(n+1)。

8、紅黑樹的查詢效率和AVL差不多。

 9、Black Height:即經過多少個黑色節點

 

 10、1)任何一個節點的左子樹至少有個內部節點(internal nodes)。

              原二叉樹節點,叫做 internal node。

         2)任何一個節點 x 的 bh(x)>=h(x)。

 二、紅色樹的插入

1、根節點初始化為黑色

2、非根節點插入預設為紅色

 

3、如果插入的節點的父節點紅色,就把父節點和其兄弟節點都換成黑色節點,再看父親節點的父親節點是不是根節點,如果不是,也需要重新著色。

 

 

4、如果其沒有兄弟節點,就需要對其進行旋轉,旋轉方法參考AVL的LL、RR、LR、RL,然後重新進行著色。5)

 

 5、重複這個過程

 

原視訊:2021年最好懂的紅黑樹