1. 程式人生 > >紅黑樹學習筆記 — (1) 定義、插入、刪除

紅黑樹學習筆記 — (1) 定義、插入、刪除

紅黑樹(RBT)本質上是一種二叉查詢樹(BST),但它在二叉查詢樹的基礎上額外添加了一個標記(顏色),同時具有一定的規則。這些規則使紅黑樹保證了一種平衡,插入、刪除、查詢的最壞時間複雜度都為 O(logn)。

五個特性

  1. 每個節點是黑色或紅色
  2. 根節點(root節點)是黑色
  3. 葉子節點(null節點)是黑色
  4. 兩個相臨的節點不能都是紅色
  5. 根節點到葉子節點的黑高(BH)恆等

補充性質

  1. 任意一棵以根節點為黑色的子樹必定是RBT(遞迴定義)

  2. 不像平衡二叉樹(AVL)一樣永遠保持絕對平衡, 左(右)子樹的高度最多是右(左)子樹的兩倍, 左、右子樹黑高恆等

插入調整 (自底向上)

  • 節點名稱定義 在這裡插入圖片描述 在這裡插入圖片描述
  • 無需調整的情況 、三個case 在這裡插入圖片描述

  1. case1 在這裡插入圖片描述 在這裡插入圖片描述 在這裡插入圖片描述 在這裡插入圖片描述
  2. case2 在這裡插入圖片描述 在這裡插入圖片描述 在這裡插入圖片描述 在這裡插入圖片描述
  3. case3 在這裡插入圖片描述 在這裡插入圖片描述 在這裡插入圖片描述

AVL插入 VS RBT插入

刪除調整

待補充…