演算法導論13 1紅黑樹的性質 練習總結

2021-07-05 17:52:54 字數 1727 閱讀 2901

13.1-1 按照圖13-1(a) 的方式,畫出關鍵字集合上高度為 3 的完全二叉搜尋樹。以三種不同方式想圖中加入 nil 葉結點並對各結點著色,使所得的紅黑樹的黑高分別為 2,3 和 4。

如上圖的二叉樹(省略哨兵 t.nil )

黑高為 2 :令深度為 0,2 的結點為黑,深度為 1,3 的結點為紅。

3 :令深度為 0,2,3的及誒點為黑,深度為 1 的結點為紅。

4 :全部結點均為黑。

13.1-2 對圖 13-1 中的紅黑樹,畫出對其呼叫 tree-insert 操作插入關鍵字 36 後的結果。如果插入的結點被標為紅色,所得的樹是否還是一棵紅黑樹?如果該結點被標為黑色呢?

answer:如果插入的結點被標為紅色,所得的樹仍是紅黑樹;如果被標為黑色,則不是紅黑樹。

13.1-3 定義一棵鬆弛紅黑樹為滿足紅黑性質 1、3、4 和 5 的二叉搜尋樹。換句話說,根結點可以是紅色或是黑色。考慮一棵根結點為紅色的鬆弛紅黑樹 t。如果將 t 的根結點標為黑色而其他不變,那麼所得到的是否還是一棵紅黑樹?

answer:必須是。

13.1-4 假設將一棵紅黑樹的每乙個紅結點「吸收」到它的黑色父結點中,使得紅結點的子結點變成黑色父結點的子結點(忽略關鍵字的變化)。當乙個黑結點的所有紅色子結點都被吸收後,它可能的度為多少?所得的樹的葉結點深度如何?

answer:

度可能為 2:如果左右兒子本來就全是黑色結點。

3:左右兒子結點情況一黑一紅。

4:左右兒子結點均為紅色。

13.1-5 證明:在一棵紅黑樹中,從某結點 x 到其後代葉結點的所有簡單路徑中,最長一條至多是最短一條的 2 倍。

answer:假設該結點的黑高為 bh(x),則有 bh(x) 個黑結點,紅結點數目 ≤ bh(x)。

∴最短一條路徑(全黑)s ≥ bh(x) ,最長一條路徑(黑紅兼備)t = 紅 + 黑 ≤ bh(x) + bh(x) ≤ 2s。得證!

13.1-6 在一棵黑高為 k 的紅黑樹中,內部結點最多可能有多少?最少可能多少個?

answer:

最多:樹的高度為 2k-1(紅黑高度分別佔 k, k-1),結點個數為 2^(2k) - 1個。

最少:樹的高度為 k-1(全黑),結點個數為 2^(k-1) - 1個。

13.1-7 試描述一棵含有 n 個關鍵字的紅黑樹,使其紅色內部結點個數與黑色內部結點個數的比值最大,這個比值是多少?該比值最小的樹又是怎樣呢?比值是多少?

answer:

最大比值為 2:每個黑結點的左右兒子均為紅結點。

最小比值為0:全部結點均為黑色。

演算法導論 13 1紅黑樹的性質

紅黑樹的性質 1 每個結點或是紅的,或是黑的。2 根節點是黑的。3 每個葉子結點是黑的。4 如果乙個結點是紅的,則它的 5 對每個結點,從該結點到其子孫結點的所有路徑上包含相同數目的黑結點。一顆有n個節點的紅黑樹的高度至少為2lg n 1 練習 13.1 2 對於書上13 1圖中插入36。如果結點顏...

《演算法導論》筆記 第13章 13 1 紅黑樹的性質

紅黑樹中每個結點包含五個域 color,key,left,right和p。如果某結點沒有乙個子結點或父結點,則該域指向nil。我們把nil視為二叉樹的外結點 葉子 而帶關鍵字的結點視為內結點。一棵二叉樹如果滿足下面的紅黑性質,則為一棵紅黑樹 1 每個結點或是紅的,或是黑的。2 根結點是黑的。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...