理解一下紅黑樹

定義

紅黑樹是每個節點都帶有顏色屬性的二叉查找樹,顏色或紅色或黑色。在二叉查找樹強制一般要求以外,對於任何有效的紅黑樹我們增加了如下的額外要求:

  • 性質1.每個節點或是紅色或是黑色。
  • 性質2. 根節點是黑色。
  • 性質3.所有葉節點都是黑色。(葉子是NUIL節點)
  • 性質4. 每個紅色節點的兩個子節點都是黑色。(從每個葉子到根的所有路徑上不能有兩個連續的紅色節點)
  • 性質5. 從任一節點到其每個葉子的所有路徑都包含相同數目的黑色節點。

下面是一棵簡單的紅黑樹,可以到它就符合上述性質
在這裏插入圖片描述

畫一個紅黑樹

我們規定新插入的節點爲紅色
這是爲什麼?
就是因爲性質5,假設我們插入一個黑色節點,不管它放在哪裏,都會導致你這個分支的黑色多了一個,新生成的紅黑樹都不滿足性質5.
在這裏插入圖片描述
總結一下紅黑樹調整的規律

插入新節點
如果:

  1. 父節點是黑色,不進行調整
  2. 父節點是紅色:
    • 叔叔節點是空的,進行旋轉,變色
    • 叔叔節點是紅色,把父節點和叔叔節點變爲黑色,祖父節點變爲紅色
    • 叔叔節點是黑色,旋轉加變色
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章