Interactive

AVL木可視化

AVL木は最初に発明された自己平衡二分探索木で、 すべてのノードで「左部分木の高さ − 右部分木の高さ」(平衡係数)が-1・0・+1のいずれかという厳格な条件を保ちます。 キーを挿入すると、BST探索→葉として追加→根に向かって祖先の高さと平衡係数を再チェックし、 崩れていればLL・RR・LR・RLの4パターンいずれかの回転で直す様子をステップ再生できます。

3 / 20 ノード
20h=2 bf=010h=1 bf=030h=1 bf=0
このステップで注目h=部分木の高さ bf=平衡係数(左の高さ−右の高さ)

全ノードの平衡係数が-1〜+1に収まり、heightも正しく整合しています(最大|bf|=0)

1 / 1
完了

初期状態(20 → 10 → 30 の順に挿入済み)

ここから好きなキーを挿入して、高さの再計算と回転の過程を観察できます。

ここが分かる

  • 崩れ方は4パターンだけ——LL(左の子の左側が重い)は右回転1回、RR(右の子の右側)は左回転1回、LR・RLは「く」の字を一直線に変形してから2回目の回転。どのケースも子(または孫)の平衡係数を見れば一意に決まる。
  • 挿入の場合、最初に見つかった不均衡な祖先を1回(単一or二重)回転させるだけで木全体の平衡が戻る——回転後のその部分木の高さは挿入前とまったく同じに戻るため、それより上の祖先は一切変化しない。赤黒木のケース1(再彩色)が祖先を何段も連鎖することがあるのとは対照的。
  • 厳格な平衡条件の代償として、AVL木の高さは最大でも約1.44 log₂nと非常に低く保たれる(赤黒木は約2 log₂n)——検索は速いが、挿入・削除での回転が起きやすい。読み取り中心の辞書に向く。