【あかくろぎ】
赤黒木 とは?
💡 色分けルールで「自動的にバランスを保つ」木
📌 このページのポイント
普通の二分探索木じゃダメなの?
普通の二分探索木はデータの挿入順によって偏る。ソート済みデータを順番に挿入すると一直線(リスト状)になって、検索がO(n)に劣化する。赤黒木は挿入・削除のたびに色の規則に従って回転操作を行い、木の高さをlog nに保つ。どんなデータ順でも安定した性能が出るんだよ
どんなルールがあるの?
5つの不変条件がある。①各ノードは赤か黒、②ルートは黒、③葉(NIL)は黒、④赤ノードの子は必ず黒(赤が連続しない)、⑤任意のノードから葉までの黒ノード数が同じ(黒高さが等しい)。この条件が崩れたら回転と色の変更で修復する。④と⑤が木のバランスを保つ核心だよ
AVL木とどう違うの?
実際にどこで使われてる?
まとめ:ざっくりこれだけ覚えればOK!
「赤黒木」って出てきたら「色のルールで自動バランスする高速な木構造」と思えればだいたいOK!
📖 おまけ:英語の意味
「Red-Black Tree」 = 赤黒木
💬 ノードをRed(赤)とBlack(黒)に色分けしてバランスを保つ木構造だよ