紅黑樹定義與五大性質
紅黑樹是自平衡二元搜尋樹,每個節點標記紅/黑,滿足:
- 節點非紅即黑。
- 根節點為黑。
- 葉節點(NIL/哨兵)為黑。
- 紅節點的子節點必為黑(無連續紅)。
- 任一節點到其所有葉節點的路徑,黑節點數相同(黑高度一致)。

第 3 點引入黑哨兵,確保性質 5 能在所有路徑一致計算。
旋轉操作(同 AVL)
- LL(右旋)、RR(左旋)、LR(左後右)、RL(右後左)
- 旋轉後更新顏色而非平衡因子

插入修復流程
新節點預設 紅(插入黑會破壞黑高度)。
案例 1:父節點為黑 → 直接完成

案例 2:父節點為紅 → 祖必為黑,視叔節點顏色分類

2.1 叔節點為紅 → 重新著色,向上繼續
- 父、叔 → 黑
- 祖 → 紅
- 以祖為新判定點繼續向上檢查

2.2 叔節點為黑/不存在 → 旋轉修復(4 種幾何形態)
- LL:新-父-祖皆左傾 → 右旋祖
- LR:新右、父左、祖左 → 左旋父、右旋祖
- RR:皆右傾 → 左旋祖
- RL:新左、父右、祖右 → 右旋父、左旋祖
旋轉後:新根變黑、祖變紅,修復結束無需向上。

刪除修復流程
- 標準 BST 刪除:雙子節點用中序前驅取代,實際刪除節點最多一子。
- 實際刪除節點
old,取代節點 new。
情況 1:old 為紅 → 必為葉,直接刪除

情況 2:一紅一黑 → new 染黑即可

情況 3:雙黑(old 黑、new 黑/無) → 複雜回溯
依兄弟節點顏色分類:
3.1 紅兄 → LL/RR 旋轉,父變紅、兄變黑,判定點下降一層轉為黑兄

3.2 黑兄 → 視姪節點與父顏色
- 二黑姪、紅父:父→黑、兄→紅、new→黑,結束。
- 二黑姪、黑父:父→new顏色、new→黑、兄→紅,判定點上移繼續。
- 紅姪:4 種幾何形態(LL/LR/RR/RL)旋轉,旋轉後新根繼承父色、父變黑、對應姪變黑,結束。

實作註記
- BCL
TreeSet 採用「下沉式」預先旋轉/著色,避免回溯,但未命中時有額外開銷。
- 本系列採用「路徑棧回溯」法,邏輯清晰、易除錯,效能接近 BCL。
- Silverlight 動畫展示插入/刪除過程(需安裝 Silverlight 2.0)。