紅黑樹旋轉變色規則(最全面詳細版)

一、紅黑樹性質

  1. 結點必須是紅色或者黑色。
  2. 根節點必須是黑色。
  3. 葉節點(NIL)必須是黑色(NIL節點無數據,是空節點)。
  4. 紅色結點不能連續。
  5. 從任一節點出發到其每個葉子節點的路徑,黑色節點的數量必須相等。

二、旋轉變色規則

已知插入根節點塗爲黑色,其他節點都是塗紅色;如果插入結點的父節點爲黑色,就不需要進行旋轉變色調整,其他情況都需要根據實際選擇合適的處理策略進行調整,使其符合紅黑樹性質。最開始調整的時候是將插入結點作爲當前節點。

紅黑樹元素插入旋轉變色規則
  實際情況 處理策略
第一種 當前節點的父節點是紅色,且其祖父節點的另一個子節點(叔叔節點)也是紅色,祖父節點不是根節點。

(1)將父節點和叔叔節點設爲黑色。

(2)將祖父節點設爲紅色。

(3)將祖父節點作爲新的當前節點。

第二種 當前節點的父節點是紅色,叔叔節點也是紅色,且當前節點在最邊上(即每行最左邊或最右邊的節點),祖父節點是根節點。

(1)將根節點作爲新的當前節點,以根節點爲支點進行左旋(插入的是右孩子)或者右旋(左孩子)。

(2)旋轉後將新的根節點變黑色,其他節點根據需要變色,只要保證不出現紅紅連續節點即可。

(3)判斷性質5是否已滿足,不滿足則以當前節點爲支點進行一次左旋或右旋,旋轉後依舊要保證不出現紅紅連續節點,否則進行變色。

第三種 其他所有情況,前提是當前節點的父節點是紅色。

(1)將父節點作爲新的當前節點。

(2)以新的當前節點爲支點進行左旋(插入的是右孩子)或者右旋(左孩子)。

 

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