B木(B-Tree)とは、 ファイルシステムやデータベースの実装の基礎となる平衡探索木です。 平衡探索木では、要素の検索・挿入・削除などの操作が、 いかなる場合でも \(O(\log n)\) の計算量で行えます(\(n\) は要素数)。 何の工夫もしない単なる2分探索木では、 挿入や削除のパターンによっては木の茂り方のバランスが崩れてしまい、 各種操作に \(O(n)\) の計算量が必要になる場合があります。 データベースでは、B木の検索の計算量が \(O(\log n)\) であることを利用してインデックス(索引)を作ります。 インデックスを使うと、 通常の検索よりも速くデータにアクセス出来るようになります。 ちなみに、B木と同じ平衡探索木の 赤黒木 や AVL木 も各種操作の計算量は、いかなる場合でも \(O(\log n)\) ですが、 これらは2分木で実現されており、完全にはバラ
![B-Tree by Java -- B木のすごく簡単な実装](https://cdn-ak-scissors.b.st-hatena.com/image/square/91149872fecf05dc4711542dfb1d8346fee5a9ee/height=288;version=1;width=512/http%3A%2F%2Fwww.moon.sannet.ne.jp%2Fokahisa%2Fb-tree%2Fbtree.png)