對RBTree的總結

來源:互聯網
上載者:User

紅/黑樹狀結構是一棵二叉搜尋樹,它在每個節點上增加了一個儲存位來表示節點的顏色,可以是Red或Black。通過對任何一條從根到葉子簡單路徑上的顏色來約束,紅/黑樹狀結構保證最長路徑不超過最短路徑的兩倍,因而近似於平衡。
紅/黑樹狀結構是滿足下面紅黑性質的二叉搜尋樹
1. 每個節點,不是紅色就是黑色的
2. 根節點是黑色的
3. 如果一個節點是紅色的,則它的兩個子節點是黑色的(兩個紅色結點不能相鄰)
4. 對每個節點,從該節點到其所有後代分葉節點的簡單路徑上,均包含相同數目的黑色節點
為什麼滿足上面的顏色約束性質,紅/黑樹狀結構能保證最長路徑不超過最短路徑的兩倍。
假設在極端情況下,最短路徑上的結點全為黑,最長路徑上的黑色結點數與最短路徑上的相同,紅色結點只能夾在黑色結點的中間,最長路徑的長度必然不會超過最短路徑的兩倍。

插入的幾種情況
cur為當前節點,p為父節點,g為祖父節點,u為叔叔節點
第一種情況
cur為紅,p為紅,g為黑,u存在且為紅
則將p,u改為黑,g改為紅,然後把g當成cur,繼續向上調整。

第二種情況
cur為紅,p為紅,g為黑,u不存在/u為黑
p為g的左孩子,cur為p的左孩子,則進行右單旋轉;相反,p為g的右孩子,cur為p的右孩子,則進行左單旋轉
p、g變色–p變黑,g變紅

第三種情況
cur為紅,p為紅,g為黑,u不存在/u為黑
p為g的左孩子,cur為p的右孩子,則針對p做左單旋轉;相反,p為g的右孩子,cur為p的左孩子,則針對p做右單旋轉–>轉換成了情況2

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.