紅黑樹

 

 

 

 

 

 

 

 

 

 

 

 問題:算法

  可否進一步提升,好比整體O(n+h)、單版本O(1)? 答案是能夠!!spa


 

相鄰的版本之間的差別不能超過O(1),顯然AVL樹的刪除操做不能知足這一點,由於當每次刪除一個節點後,有可能自底而上,逐層引起多大logN次的旋轉。3d

 

 

 

因此要用到紅黑樹:blog

 


 紅黑樹所具備的規則:接口

 

 

 

 對紅色節點作一次提高變換:原理

 

 

  底層節點:im

 

 

在通過提高以後:d3

 

  

 

 原來提高以後的紅黑樹就是4階B樹啊!!!總結

 

 

 

 


 

 紅黑樹接口定義:  margin

  

 

 


 

紅黑樹的動態調整算法:

  插入:

 

 

 

 

 

 

雙紅修正算法:

  第一種狀況:叔父節點u是黑色的

  

 

 

 

 

 第二種狀況:叔父節點u是紅色的

  

 

 須要在出現問題的節點中,找到居中的那個關鍵碼,而且以他爲界,將原先的大節點分爲左右兩個新的節點。居中分界的關鍵碼,將被取出上移插入父節點的位置中。

  

 插入操做討論:

 


 

 紅黑樹的刪除算法:

  

 

 

 

 

 

 

 當待刪除節點x與替代者r均爲黑色時(雙黑):必然違背第四條規則:

  

 

 BB-1:兄弟爲黑色,且兄弟s至少有一個紅孩子爲t.

 

 四顆子樹的黑高度都是同樣的,若是調整之後,紅黑樹性質在全局得以恢復——刪除完成。這一轉換在其背後有着深入的原理。仍是將紅黑樹轉換到B樹查看

 

 

 

 

 

BB2R狀況:父親p爲紅色,兄弟s及兄弟的兩個孩子均爲黑色。    而當s的兩個孩子都爲黑時,提高之後,兄弟節點本身也沒有足夠的孩子了。

 

 

 

 BB2B狀況:父親p爲黑色,兄弟s爲黑色,兄弟s的兩個孩子也爲黑色。

 

BB-3:兄弟s爲紅色,其孩子均爲黑色

    

 

 


 總結概括

 

相關文章
相關標籤/搜索