ENGINEER_SPEC: 2分探索木 (BST)
2分探索木(Binary Search Tree)は、データの「検索・追加・削除」を高速に行うための基礎的なデータ構造です。RDBMS(リレーショナルデータベース)のインデックス技術などの土台となっています。
1. 構築ルール(インサート)
新しいデータを追加する際、親となるノードと比較して以下のルールに従います:
- 左側の枝:親ノードよりも「小さい」値を配置。
- 右側の枝:親ノードよりも「大きい」値を配置。
このルールを守ることで、木全体が常に「左が小さく、右が大きい」という整然とした状態に保たれます。
2. 高速探索のヒミツ(計算量)
目的のデータを探す際、ルート(根)から始めて「探している値が現在地より大きいか小さいか」を判断するだけで、探索範囲を毎回半分に絞り込むことができます。
これにより、端からすべて探す線形探索の O(n) に対し、2分探索木は平均計算量 O(log n)
という圧倒的なパフォーマンスを発揮します。
3. 実務での注意点(最悪ケース)
もし、すでにソートされたデータ(例:1, 2, 3, 4, 5...)を順番に追加すると、すべて右側に偏った「ただの一直線のリスト」になってしまいます。こうなると計算量は最悪の O(n) に悪化してしまいます。
実務で使われるデータベース等では、この偏りを自動で検知して平衡(バランス)を保つ「B木(B-Tree)」や「赤黒木」といった応用アルゴリズムが採用されています。