二分探索木 【binary search tree】 2分探索木 / バイナリサーチツリー

概要

二分探索木(binary search tree)とは、データ構造の一つである二分木(バイナリツリー)のうち、各ノードよりも左の子ノードの方が小さく、右の子ノードの方が大きくなるように構築したもの。データ探索に適したデータ構造である。

木構造はグラフ構造のうち要素に親子関係があり、親が複数の子を持つことができるようなものを意味し、根ノードroot node)を頂点として階層的に枝分かれしていく構造となる。どの親ノード子ノードを一つか二つしか持たないという制限を課されたものを「二分木」(binary tree/2分木)という。

二分探索木は二分木構築する際に、どのノードも「左の子孫の≦自らの≦右の子孫の」という条件を満たすようにを挿入していく。根ノードから出発して、挿入値が現在のノードより小さければ左の子、大きければ右の子ノードに移動していき、末端のノード葉ノード)に達したら次に移動すべき場所に新たなノードを作成してを格納する。N個のの挿入には O(log N) の計算量がかかる。

格納された探索する際には、根ノードから出発して、各ノード探索しているより大きければ左の子に、小さければ右の子ノードに移動していき、葉ノードまでたどる間にが見つかれば探索は打ち切り、葉ノードに至ってもが見つからなければ「目的のは存在しない」という結論になる。ノードがN個の木の探索には O(log N) の計算量がかかる。

このような探索法を「二分探索」(バイナリサーチ/二分探索法)という。根から葉までの深さ(高さ)の数だけを調べればよく、を単純に端から順番に調べるより効率的に探索できる。なお、木にデータを追加する際に親と同じを左右どちらのノードに入れるかは任意だが、毎回異なることがないようあらかじめ決めておく。

平衡二分探索木 (self-balancing binary search tree)

二分探索木のうち、根ノードから子を持たない末端の葉ノードまでの深さ(高さ)がなるべく均等になるように構築されたものを「平衡二分探索木」という。

二分探索木で探索するには、根ノードから出発して、各ノード探索しているより大きければ左の子に、小さければ右の子に移っていくが、枝によって深さがまちまちだと探索終了までの比較回数にばらつきが出る。

根から葉までの距離がなるべく均等な方が比較回数が揃って平均的に効率よく探索できるため、平衡二分探索木ではの挿入や削除の際に高さが均等になるような処理をう。代償として、木の構築の際には平衡を考慮しない単純な二分探索木より時間がかかる。

(2024.1.27更新)

他の辞典による解説 (外部サイト)

この記事を参照している文書など (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。
ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる