多方向ツリー(多分木)とは?定義とm-way探索木の条件をわかりやすく解説
多方向ツリー(多分木)の定義
多方向ツリー(multiway tree、多分木)とは、各ノードが2つ以上の子ノードを持つことができる木構造のことです。通常の二分木では子ノードは最大2つに制限されていますが、多方向ツリーではこの制限が緩和され、より柔軟なデータ構造を実現できます。
もし多方向ツリーの子ノード数の最大値が m 個である場合、その木は「次数 m の多方向ツリー(m-way tree、m分木)」と呼ばれます。
ノードの構造
これまで学習してきた他の木構造と同様に、m-way ツリーの各ノードは以下の要素で構成されます。
- キー(鍵)フィールド: 最大 m-1 個
- 子ノードへのポインタ: 最大 m 個
つまり、キーの数よりも常にポインタが1つ多くなる構造になっています。これは、n 個のキーで n+1 個の区間(部分木)を表現できるためです。
次数5の多方向ツリーの例
下図は、次数5(5-way)の多方向ツリーのイメージです。各ノードは最大4つのキーと最大5つの子へのポインタを持つことができます。

m-way 探索木(多方向探索木)とは
m-way ツリーの処理を効率化するために、各ノード内のキーに対して何らかの制約(順序のルール)を課したものを「次数 m の多方向探索木(m-way search tree)」と呼びます。
定義上、m-way 探索木は次の条件をすべて満たす必要があります。
m-way 探索木が満たすべき4つの条件
- 子ノードとキーフィールドの関係: 各ノードは最大 m 個の子ノードと、最大 m-1 個のキーフィールドを持つ。
- キーの整列: 各ノード内のキーは昇順に並べられている。
- 左側の部分木: 先頭から j 番目の子ノードに属するキーは、j 番目のキーよりも小さい。
- 右側の部分木: 最後の m-j 個の子ノードに属するキーは、j 番目のキーよりも大きい。
まとめ
多方向ツリーは、二分木を一般化したデータ構造であり、特に B木 や B+木 などの平衡多分木の基礎となる重要な概念です。これらの構造はデータベースやファイルシステムのインデックス実装に広く活用されており、大量のデータを効率的に検索・挿入・削除することを可能にしています。m-way 探索木の条件を理解することは、こうした高度なデータ構造を学ぶ第一歩となります。
-
m分木(m-aryツリー)とは?定義・m-way探索木の条件・B木との関係を解説
コンピュータサイエンスにおけるm分木(m-ary tree)とは、ノードの集合を階層的に表現したデータ構造であり、一般的に次のように定義されます。木は根(ルート)ノードから始まる。木の各ノードは、子ノードへのポインタのリストを保持している。各ノードが持てる子ノードの数はm以下である。m分木の典型的な実装では、子ノードを格納するためにm個の参照(ポインタ)からなる配列を使用します。ここで、mは子ノード数の上限値(最大値)である点に注意してください。実際の子の数がmより少ない場合は、未使用のスロットが生じます。m分木の構造イメージm-way探索木の条件m-way探索木(m-way search t
-
二分木(バイナリツリー)のデータ構造と重要な性質を解説
二分木(バイナリツリー)とは、各ノードが持てる子ノードの数を最大2つに制限した木構造のデータ構造です。本記事では、この二分木が持つ重要な性質について、具体例とともにわかりやすく解説します。まず、次のような二分木を例に考えてみましょう。二分木の主な性質各レベルの最大ノード数:レベル「l」における最大ノード数は 2l−1 です。ここでいうレベルとは、根(ルート)からそのノードまでの経路上にあるノードの総数を指し、ルート自身も含みます。なお、ルートのレベルは1として扱います。木全体の最大ノード数:高さ h の二分木に含まれる最大ノード数は 2h−1 です。ここでいう高さとは、ルートから葉までの経路上