紅黑樹也是一種自平衡二叉搜索樹數據結構
之前也叫作平衡二叉B樹post
紅黑樹必須知足一下5個性質性能
不是3d
知足code
不知足cdn
紅黑樹和4階B樹具備等價性blog
紅黑樹的Black節點個數與4階B樹的節點總數相等繼承
1 <= x <= 3
。Red
(這樣能更快的知足紅黑樹的性質)。Black
。全部的添加狀況以下圖所示遞歸
black
的狀況,直接添加,無需特殊處理。(4種狀況)Red
的狀況。有如下幾種狀況(8種)Black
時RR/LL狀況
LR\RL狀況
Black
,grand染成Red
。(染色的意義是進行後面的雙旋轉操做後本身成爲parent節點,規定partent的節點爲黑色,parent的子節點(原來的parent和grand)爲Red。)。Red
時當uncle爲Red的時候,紅黑樹對比4階B樹會發生上溢操做。
Black
。(爲了單獨爲一個節點作準備)。在B樹中真正刪除的元素都在葉子節點(若不是葉子節點,其前驅或者後繼都爲葉子節點,因此在替換後刪除的仍然爲葉子節點。 若是刪除的是20,前驅15仍然是葉子節點)。
Red
節點的時候Black
節點的時候當擁有2個Red
子節點的black節點
當擁有1個Red
子節點的black節點
Red
Black
Black
葉子節點
若是Black葉子節點的兄弟節點爲Black
Black
(10的字節點)。Red
、parent節點染Black
既可。
Black
, 會致使下溢,只須要把parent當作被刪除的節點處理既可(遞歸)實驗可得 遞歸次數小於三次。(下圖中若是40的超級節點上只有40 沒有20和70,那會發生下溢,只須要將40當作被刪除的節點既可)。若是Black葉子節點的兄弟節點爲Red
原理: 此時兄弟節點是20 。 咱們要將30變爲45的兄弟節點。而後在進行兄弟節點爲black操做
將兄弟節點染成Black
,parent染成Red
,再進行旋轉。
回到了兄弟節點爲black的狀況。
紅黑樹是一種弱平衡。黑高度平衡,因爲是黑高度平衡 和紅黑樹性質。因此最大路徑小於最短路徑的2倍
紅黑樹的最大高度是,依然是O(logn)級別。
搜索:O(logn)
添加:O(logn),O(1)次旋轉操做
刪除:O(logn),O(1)次旋轉操做
AVL
平衡標準比較嚴格:每一個左右子樹高度差1。
最大高度是(100W個節點,AVL最大高度28)。
搜索、添加、刪除都是O(logn)複雜度,其中添加須要O(1)次旋轉調整、刪除最多須要O(logn)次調整。
紅黑樹
平衡標準比較鬆:沒有一條路徑大於其餘路徑的二倍。
最大高度是(100W個節點,紅黑樹最大高度40)。
搜索、添加、刪除都是O(logn)複雜度,其中添加刪除都是O(1)次旋轉調整。
搜索的次數遠大於插入和刪除、選擇AVL樹;
搜索、插入、刪除的操做差很少,選擇紅黑樹;
相對於AVL,紅黑樹犧牲了部分平衡性能換取插入/刪除時的少許旋轉操做。總體性能優於AVL樹
紅黑樹的平均統計性能優於AVL樹,實際應用更多選擇紅黑樹。