メインコンテンツへ
アルゴリズムとプログラミングB木

B木(B-tree)の特徴として最も適切なものはどれか。

ア.各ノードに高々2つの子しか持てない二分探索木の一種である。
イ.各ノードが複数のキーと子を持ち、全ての葉が同じ深さになる自己平衡木である。正解
ウ.挿入・削除時に左右の高さの差を1以内に保つAVL木と同一の構造をとる。
エ.根から葉へのパスが一定にならず、探索効率は挿入順序に依存する。

解説

B木は「大人数のフォルダ整理システム」。1つのノードが複数の書類(キー)を持ち、すべての引き出し(葉)が同じ深さにある整然としたファイリングキャビネットです。

なぜ イ が正解か

B木はデータベースインデックスやファイルシステムで広く使われる平衡多分木です。主な特徴は以下の通りです。 ① 各ノードが最大m個(次数mのとき)の子を持てる ② すべての葉ノードが同じ深さ(平衡が保たれる) ③ 根以外の内部ノードは最低⌈m/2⌉個の子を持つ ④ ディスクI/Oを最小化するためにノードサイズをブロックサイズに合わせられる B+木ではすべてのデータが葉に格納され、葉がリンクリストで連結されています。

なぜ ア は間違いか

各ノードに高々2つの子を持つのは「二分木(Binary Tree)」の説明です。B木はmultiwayツリー(多分木)であり、名称の「B」は二分(Binary)ではなくBalanced(または考案者Bayer)に由来します。

なぜ ウ は間違いか

挿入・削除時に左右の高さの差を1以内に保つのは「AVL木」の説明です。AVL木は二分平衡木であり、B木のような多分木ではありません。両者は「平衡を保つ」点では共通しますが構造は全く異なります。

なぜ エ は間違いか

探索効率が挿入順序に依存するのは「偏った二分探索木(非平衡のBST)」の問題点です。B木はそれを解決するために設計された自己平衡木であり、常に全葉が同じ深さになります。

出典: AI生成問題(学習用)