2.8.8 - Red-Black Tree

1. 定義

是一棵Binary Search Tree且滿足:

  1. 節點的顏色非黑即紅

  2. 紅色節點的兩個子點的顏色一定要是黑色(任何路徑上不可出現連續的紅色節點)

  3. NULL是為黑色節點

  4. Root一律是黑色節點

  5. Root到不同的Leaf上的路徑皆具有相同的黑色節點數目

2. Insert

  1. 尋找x適合插入的位置

  2. 尋找的過程中,若發生節點的兩個子點是紅色的則必須做顏色轉換(做完後需檢查有無連續的紅色節點存在,若有必須做Rotation)

  3. 置入x且標為紅色節點

  4. 檢查是否有連續紅色節點,若有必須做Rotation

  5. (將Root改為黑色節點)

Rotation:與AVL Tree相似

  • LL

  • LR

  • RL

  • RR

3. 範例

{2, 7, 8, 1, 5, 6, 4}建立一個Red-Black Tree

Last updated