資料結構 紅黑樹

2021-10-24 15:48:48 字數 749 閱讀 8933

本質是二叉查詢樹,在其基礎上多了五個性質

紅黑樹並不是完美平衡二叉樹,這些規則使紅黑樹保證了一種平衡,插入、刪除、查詢的最壞時間複雜度都為 o(logn)

1. 查詢

和二叉樹查詢方法一致

2. 插入

核心思想:變色,左旋,右旋(調整自己,父節點,爺爺節點,叔叔節點的位置)

先找到插入位置,以紅色插入(此時沒有違背性質5,只需滿足性質4即可)。因此,只需關心父節點是否為紅。

情況1. 父節點和叔叔節點都是紅色

假設插入的是節點 n,這時父親節點 p 和叔叔節點 u 都是紅色,爺爺節點 g 一定是黑色。

紅色節點的孩子不能是紅色,這時不管 n 是 p 的左孩子還是右孩子,只要同時把 p 和 u 染成黑色,g 染成紅色即可。這樣這個子樹左右兩邊黑色個數一致,也滿足特徵 4。

但是這樣改變後 g 染成紅色,g 的父親如果是紅色豈不是又違反特徵 4 了? 

這個問題和我們插入、染紅後一致,因此需要以 爺爺節點 g 為新的調整節點,再次進行調整操作,以此迴圈,直到父親節點不是紅的,就沒有問題了。

情況2. 父節點為紅,叔叔節點為黑(或不存在)

此時爺爺節點 g 一定是黑色。需要分兩種情況(左節點還是右節點)通過左旋或者右旋+變色。

3. 刪除

資料結構 紅黑樹

紅黑樹是二叉排序樹的改進,紅黑樹有幾個特點 1 節點只有2中顏色,紅色和黑色。2 根節點一定是黑色節點。3 紅色節點的子節點一定是黑色節點。4 黑色高度 根節點到每個葉子節點的路徑長度包含相同的黑色節點 相等。規定的插入的節點一定是紅色節點,紅黑樹的插入節點後需要調整的規則,插入節點需要調整的情況有...

資料結構 紅黑樹

一 紅黑樹 紅黑樹 red black tree 是一種自平衡二叉查詢樹,是在 電腦科學中用到的一種 資料結構 典型的用途是實現 關聯陣列 可以保證最長路徑不超過最短路徑的2倍,近似平衡。二 性質 性質1.節點是紅色或黑色。性質2.根節點是黑色。性質3 每個葉節點 nil節點,空節點 是黑色的。性質...

資料結構 紅黑樹

紅黑樹是一棵二叉搜尋樹,它在每個節點上增加了乙個儲存位來表示節點的顏色,可以是紅色也可以是黑色。通過對任何一條從根到葉子簡單路徑上的顏色來約束,紅黑樹保證最長路徑不超過最短路徑的兩倍,因而近似於平衡。紅黑樹滿足下面的性質 1 每個節點,不是紅色就是黑色的 2 根節點是黑色的 3 如果乙個節點是紅色的...