紅黑樹

紅黑樹:

1.)帶節點顏色屬性的二叉搜索樹
2.)確保樹的高度爲 h=O(logn)

紅黑樹屬性:

  1. 每個節點要麼是紅色,要麼是黑色
  2. 每個葉子節點(一定是NULL指針)一定是黑色
    • 這意味着每個“真正”的節點都有兩個孩子
  3. 紅色節點的兩個孩子都是黑色
    • 這意味着樹的任何路徑上不可能存在兩個連續的紅色節點
  4. 從任意某個節點出發,到所有能到達的葉子節點的路徑上的黑色節點數量相等
  5. 根節點是黑色

黑色節點的高度:

黑色節點的高度的定義爲:黑色節點到葉子節點的路徑長度
一個高度爲h 的節點,其黑色節點高度h/2
可證明:一個擁有n 個節點的紅黑樹,起高度h2log(n+1)
證明:

紅黑樹最差情況下的耗時

紅黑樹示例:

紅黑樹示例

如何插入新的節點: 8
插入8

如何插入新的節點: 11
插入11
節點11 不能爲紅色,違反第三條屬性,一個紅色節點的兩個孩子節點都必須是黑色
節點11 不能是黑色,違反第四條屬性,從節點到所有葉子節點上的黑色節點的數量必須相等
所有,只能重新定義樹的顏色了:
這裏寫圖片描述

如何插入新的節點: 10

紅黑樹:旋轉

旋轉

這裏寫圖片描述

旋轉示例

這裏寫圖片描述
相對於9 這個節點左旋
這裏寫圖片描述

紅黑樹:插入

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章