
190
12
章 動的メモリ管理
12.4
汎用二分木
動的メモリ管理はリンク付きリストや木のような動的データ構造実装の基本だ。10章で
リンク付きリストを示した(図10-1参照)。配列に対するリンク付きリストは、新たな要素
の追加と既存の要素の削除が迅速になるという利点がある。しかし、指定された要素を探
すにはリストを順次探索しなければならないという欠点もある。
一方、二分木(BST)を使うとリンク付きデータ要素にさらに速くアクセスできる。デー
タ要素は比較とソートに使うキーを持たねばならない。二分探索木はリンク付きリストの柔
軟性と整列済み配列の利点を組み合わせ、二分探索アルゴリズムを使って、欲しいデータ
要素を探すことができる。
12.5
特性
二分木はデータまたはデータへのポインタを含む多数の節点からなり、次の構造的特性
を持つ。
●
各節点は2つまでの子節点を持つ。
●
親節点を持たない、木の根と呼ばれる節点が1つだけある。他の全節点は1つだけの
親を持つ。
●
二分木の節点は次の規則に従って配置される。節点の値が左分岐のどの子孫の値より
大きいか等しく、右分岐のどの子孫よりも小さいか等しい(同じ値の重複が可能)。
図12-1は二分木の構造を説明する。
4
7
10
14
11
15
18
図12-1 二分木
葉は子を持たない節点だ。木の各節点は、その節点とその節点のすべての子孫とからな
る部分木の根と考えることができる。
二分木の重要な特性はその高さだ。高さは根から葉への最長経路の長さである。経路は
与えられた節点対