> For the complete documentation index, see [llms.txt](https://garychang.gitbook.io/data-structure/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://garychang.gitbook.io/data-structure/lecture2-tree-and-binary-tree/lecture-2.8-advanced-trees/2.8.8-red-black-tree.md).

# 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**&#x20;

![](https://2769815795-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LGckN3OAfinKuVIrkMj%2F-LHuawMtS0ySV2rfYOE9%2F-LHuaxqxEM0FRbbT_nwj%2F%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7%202018-07-20%2021.48.30.jpg?alt=media\&token=cfb88966-3436-4341-90fd-1c03377e6554)

* **LR**

![](https://2769815795-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LGckN3OAfinKuVIrkMj%2F-LHuawMtS0ySV2rfYOE9%2F-LHubIpyjqZGscOb01Qa%2F%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7%202018-07-21%2010.13.34.jpg?alt=media\&token=29bd032a-b3f6-4b37-a119-420226808be3)

* **RL**

![](https://2769815795-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LGckN3OAfinKuVIrkMj%2F-LHubbV9y9Y-epEI583n%2F-LHubrQIstApRchyXtpy%2F%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7%202018-07-21%2010.15.57.jpg?alt=media\&token=eeb4ef87-ac73-4fbb-a21f-dfc2df4a8352)

* **RR**

![](https://2769815795-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LGckN3OAfinKuVIrkMj%2F-LHubbV9y9Y-epEI583n%2F-LHuc4zDZlQDhpgXXcsx%2F%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7%202018-07-21%2010.16.58.jpg?alt=media\&token=170dcf7c-292a-4e75-98c1-fcfe12fe3667)

### 3. 範例

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

![](https://2769815795-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LGckN3OAfinKuVIrkMj%2F-LHueHI6ybhY8qJqVHXo%2F-LHueIaemWqRsp_WHRRG%2F%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7%202018-07-21%2010.26.31.jpg?alt=media\&token=10cd2c97-8537-4d96-828b-78d4d2aff16c)

![](https://2769815795-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LGckN3OAfinKuVIrkMj%2F-LHufG3QnkuCq-EIFe05%2F-LHufHjK6V1LOV3_q_Xu%2F%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7%202018-07-21%2010.30.55.jpg?alt=media\&token=dddeaef5-0efd-41bc-be9a-98e355a8c040)

![](https://2769815795-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LGckN3OAfinKuVIrkMj%2F-LHufG3QnkuCq-EIFe05%2F-LHugDyvvUtIN3NOPRJl%2F%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7%202018-07-21%2010.35.04.jpg?alt=media\&token=83fff262-3e1c-4162-abb3-2ecff30129ca)
