紅黑樹 RBT(一 紅黑樹定義以及簡介)

2022-09-16 19:06:10 字數 692 閱讀 1647

一、紅黑樹

1、介紹:紅黑樹是一種二叉查詢樹,但在每個節點上增加乙個儲存位表示節點的顏色,可以是red或black。通過對任何一條從根到葉子的路徑上的各個節點著色方式的限制,紅黑樹確保沒有一條路徑會比其他路徑長出兩倍,因而是接近平衡的。

2、定義:它或者是一顆空樹,或者是具有一下性質的二叉查詢樹

1):每個節點或是紅的,或是黑的。

2):根節點是黑的。

3):每個葉節點(nil)是黑的。(所有null結點稱為葉子節點,且認為顏色為黑

4):如果乙個節點是紅的,則他的兩個子節點是黑的。

5):對每個節點,從該節點到其子孫節點的所有路徑上包含相同數目的黑節點。

3、結構:樹中的每個節點上包含五個域:color、key、left、right、p。如果其節點沒有乙個子節點或者父節點,則該節點相應的指標(p)域包含值nil。我們把這些nil視為指向二叉查詢樹的外節點,而把帶關鍵字的節點是為樹的內節點。

4、高度:一顆有n個內節點的紅黑樹的高至多為2lg(n+1)。

5、應用:j**a集合中的treeset和treemap,c++ stl中的set、map,以及linux虛擬記憶體的管理,都是通過紅黑樹去實現的。 

紅黑樹下 紅黑樹的實現

1.實現紅黑樹的基本思想 實際上,紅黑樹是有固定的平衡過程的 遇到什麼樣的節點分布,我們就對應怎麼去調整。只要按照這些固定的調整規則來操作,就能將乙個非平衡的紅黑樹調整成平衡的。首先,我們需要再來看一下紅黑樹的定義 在插入 刪除節點的過程中,第 三 四點要求可能會被破壞,所以 平衡調整 實際上就是把...

紅黑樹下 紅黑樹的實現

1.實現紅黑樹的基本思想 實際上,紅黑樹是有固定的平衡過程的 遇到什麼樣的節點分布,我們就對應怎麼去調整。只要按照這些固定的調整規則來操作,就能將乙個非平衡的紅黑樹調整成平衡的。首先,我們需要再來看一下紅黑樹的定義 在插入 刪除節點的過程中,第 三 四點要求可能會被破壞,所以 平衡調整 實際上就是把...

紅黑樹筆記 紅黑樹的插入操作

紅黑樹的插入操作可以在o logn 的時間內完成。開始插入節點的時候和二叉查詢樹一樣,只需要最後將插入的節點著成紅色,為了保證紅黑樹的性質,需要通過rb insertfixup函式來調整該節點,對其重新著色並旋轉。下面先呼叫rb insert 函式將乙個節點插入到紅黑樹中,同樣先上偽 rb inse...