資料結構 2 3 4樹與紅黑樹

2021-08-15 09:07:31 字數 1258 閱讀 3026

前面講到了2-3樹,2-3樹是允許節點最多有三個子節點的樹,2-3樹中有2節點和3節點,2節點跟普通的二叉樹節點一樣,3節點ab就是的左子樹上的所有節點的值小於a,中子樹上所有節點的值大於a而小於b,右子樹上節點的值大於b。2-3樹是一種平衡樹。

2-3-4樹跟2-3樹差不多,只不過是把節點的最大子節點個數擴充到了4個,所以2-3-4樹的節點有2節點3節點4節點四種,當發現插入節點是2節點或3節點時,就可以把節點進行擴容直接插入,如果發現是4節點的話,就向上回溯,把4節點進行**,並把中間的元素向上提。向上提時不可能回溯超過兩層,因為4節點的子節點不可能再有子節點了。在插入的時候,如果發現插入的節點已經是4節點了,那麼就要向上回溯**,如果發現插入節點的父節點是2或3節點,就直接上提,然後當前節點**,如果發現父節點是4節點,則父節點也**,這樣就導致上提不會提到父節點的父節點,所以父節點的父節點不會增加元素,因此乙個4節點的子節點不會再有子節點了。所以插入位置的如果是4節點,要向上提回溯也不可以回溯很多層,這樣在插入或者刪除操作時效率就比普通的二叉平衡樹高多了。一但發現插入位置已經是4節點,而把插入節點**上提導致父節點也成為4節點,就將父節點也**。這樣能保證如果父節點已經是4節點,再向上提可父節點無法再**的情況。用這處條件再來約束就可以保證所有的4節點都在最下面一層,而且各個子樹的高度一樣,這樣樹一定是完全平衡的。

由於2-3-4樹的節點型別有3種,比較麻煩,因此可以用紅黑樹來表示2-3-4樹,任意2-3-4樹都可以轉換成一棵紅黑樹。紅黑樹通過給節點新增紅色和黑色來表示2-3-4樹的三種節點。紅黑樹2-3-4樹中的3節點變成兩個節點,而把4節點變成乙個根節點+左右子節點的形式。由於3節點變成兩個節點,乙個節點可以是另乙個節點的左子樹或右子樹,所以在轉換成紅黑樹時,只考慮形成左子樹的,這種情況叫做左傾。並且為了維持紅黑樹中紅節點的子節點只能是黑節點,所以2-3-4樹中不能有兩個連續的3節點。當向2節點中插入時,如果插入的是左節點,則直接插入,如果是右孩子,因為要左傾,就需要插入後左旋。當向3節點中插入時,則一次左旋+右旋或者一次右旋,形成乙個4節點。如果向4節點中插入,就需要將4節點進行**。這個**的過程在紅黑樹中表示得非常簡單,就是把兩個紅節點變黑,再把父節點的黑色變紅即可。

總的來說紅黑樹在插入時,如果發現插入節點為空,則插入,如果發現左右子節點都是紅節點,就是相當於插入4節點,就要先**,也就是把兩個紅色的子節點變黑,把黑色的父節點變紅。然後再比較插入的值和父節點的大小,如果等於,則插入失敗。如果小於,插入左子節點中,如果大於,則插入右子節點中。插入後可以會破壞紅黑色的特性,這時就需要一些旋轉來恢復。如果只有右子節點為紅節點,則左旋轉父節點,然後旋轉後如果左子節點和左子節點的左子節點都是紅色,則右旋轉。

資料結構 紅黑樹

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

資料結構 紅黑樹

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

資料結構 紅黑樹

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