紅黑樹是具有下列性質的二叉搜尋樹:
1.每個節點或是紅色的,或是黑色的。
2.根節點是黑色的。
3.每個葉節點(nil)是黑色的。注意,這裡的葉節點均為外部節點。
4.如果乙個節點是紅色的,則它的兩個子節點都是黑色的。
5.對每個節點,從該節點到其所有後代的簡單路徑上,均包含相同數目的黑色節點。
從某個節點x出發(不含該節點),到達乙個葉節點的任意一條簡單路徑上黑色節點的個數(包括外部節點nil),稱為該節點的黑高。記做:bh(x).
引理:一棵有n個內部節點的紅黑樹高度之多為2lg(n+1).
意義:紅黑樹具有o(lg(n))的演算法複雜度。
證明:設x為任意節點,當x為葉節點(nil)時,x有0個內部節點。
當x為具有左右內部節點的子節點時,將x的高度記做bh(x)。則:
a)若x子節點為紅,則子節點的高度也為bh(x);
b)若x子節點為黑,則子節點的高度為bh(x)-1.
根據歸納法,子節點最少具有 2^bh(x-1)-1個內部節點。
因此x具有至少 2*( 2^bh(x-1)-1)+1 = 2^bh(x)-1個內部節點。
即 n>=2^bh(x)-1。 又根據性質4,可得bh(x)>=h/2。
因此,n>=2^(h/2)-1。因此,h<=2lg(n+1)。
演算法導論 13 1紅黑樹的性質
紅黑樹的性質 1 每個結點或是紅的,或是黑的。2 根節點是黑的。3 每個葉子結點是黑的。4 如果乙個結點是紅的,則它的 5 對每個結點,從該結點到其子孫結點的所有路徑上包含相同數目的黑結點。一顆有n個節點的紅黑樹的高度至少為2lg n 1 練習 13.1 2 對於書上13 1圖中插入36。如果結點顏...
演算法導論13 1紅黑樹的性質 練習總結
13.1 1 按照圖13 1 a 的方式,畫出關鍵字集合上高度為 3 的完全二叉搜尋樹。以三種不同方式想圖中加入 nil 葉結點並對各結點著色,使所得的紅黑樹的黑高分別為 2,3 和 4。如上圖的二叉樹 省略哨兵 t.nil 黑高為 2 令深度為 0,2 的結點為黑,深度為 1,3 的結點為紅。3 ...
紅黑樹(演算法導論)
測試 所用的例子為算導第三版p179圖13 4 include using namespace std const bool black 0 黑色 const bool red 1 紅色 struct node 結點結構 class rb tree 初始化nil結點和root node left r...