AVL木(AVL Tree)は、 マップ(連想配列)と呼ばれるデータ構造の実装に使われる平衡木の1つです。 平衡木では木のバランスが適度にとれており、 キーの検索・要素の挿入・削除などの処理が、いかなる場合でも \(O(\log n)\) の計算量で行えます(\(n\) は要素数)。 AVL木の他にも 赤黒木 という平衡木がありますが、 AVL木は赤黒木に比べてより厳密に平衡性を維持しようとします。つまり、 よりバランスがとれているということです。 そのため赤黒木より検索の性能が良いとされています。 ただし、挿入や削除ではより手間がかかります。 本ページは、AVL木の実装に関して詳しく解説しています。 他のサイトでは省略されてしまっているような回転の場合分けについてもやさしく解説してあります。 その他にも、何故そうするの?という疑問に対して、 なるたけ答えるように書いたつもりですので、是非