紅黑樹是一種自我平衡二分搜尋樹(self-balance binary search tree),是一種資料結構。它是複雜的,但它的操作有着良好的最壞情況運行時間,並且在實踐中是高效的:它可以在O(log n)時間內做查找,插入和刪除,這裡的n是樹中元素的數目。
紅黑樹是每個節點都帶有顏色屬性的二分搜尋樹,顏色為紅色或黑色。除了一般二分搜尋樹的要求外(左子點<父節點<右子點),對於任何有效的紅黑樹增加了如下的額外要求:
性質1. 節點是紅色或黑色。
性質2. 根(root)是黑色。
性質3. 所有葉子(leaves)都是黑色(葉子是NIL節點)。
性質4. 每個紅色節點的兩個子節點都是黑色。(從每個葉子到根的所有路徑上不能有兩個連續的紅色節點)
性質5. 從任一節點到其每個葉子的所有簡單路徑都包含相同數目的黑色節點。
對於紅黑樹的操作(查找、插入、刪除、旋轉)是有點複雜的。本題給你一個較簡單的工作:判斷一棵尚未上色的樹能不能經由某種上色而成為一棵紅黑樹(Red-Black Tree),如果可以,又有多少種上色方式可以使它成為紅黑樹?
10 1 6 8 11 8 1 17 15 13 17 13 8 17 25 25 22 25 27 1 5 1 0 1 5 5 -1 5 6
Case 1:3 Case 2:1 Case 3:0
編號 | 身分 | 題目 | 主題 | 人氣 | 發表日期 |
沒有發現任何「解題報告」
|