1. 程式人生 > >演算法導論13.1紅黑樹的性質 練習總結

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

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

ANSWER:


如上圖的二叉樹(省略哨兵 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:全部結點均為黑色。