紅黑樹 學習筆記

參考: https://www.jianshu.com/p/e136ec79235c

R-B樹(紅黑樹) = 自平衡的二叉查找樹
AVL樹(平衡二叉樹) = 自平衡的二叉查找樹
在線測試: https://www.cs.usfca.edu/~galles/visualization/RedBlack.html

性質:

  • 每個節點要麼是黑色, 要麼是紅色
  • 根節點是黑色
  • 每個葉子節點(NIL)是黑色
  • 每個紅色結點的兩個子結點一定都是黑色
  • 任意一結點到每個葉子結點的路徑都包含數量相同的黑結點
    • a. 如果一個結點存在黑子結點, 那麼該結點肯定有兩個子結點

自平衡:
刪除、插入導致紅黑樹失衡後, 紅黑樹會自平衡, 即通過左旋、右旋和變色來實現

左旋: 以某個結點作爲支點(旋轉結點), 其右子結點變爲旋轉結點的父結點, 右子結點的左子結點變爲旋轉結點的右子結點, 左子結點保持不變
左旋示例圖

右旋: 以某個結點作爲支點(旋轉結點), 其左子結點變爲旋轉結點的父結點, 左子結點的右子結點變爲旋轉結點的左子結點, 右子結點保持不變
右旋示例圖

變色: 結點的顏色由紅變黑或由黑變紅


插入
插入操作叫法約定示例圖:
插入操作叫法約定

插入規則:
插入規則
注: 4.3.2 更改爲 '插入結點是其父結點的左子結點'


刪除

刪除操作叫法約定示例圖:
刪除操作叫法約定

刪除規則:
刪除規則






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