アルゴリズムとプログラミング

基本情報技術者試験2分探索木」の問題

テクノロジ系アルゴリズムとプログラミング難易度:normal
2分探索木(BST)が満たすべき構造的性質として最も適切なものはどれか。
任意のノードについて、左部分木の全ての値がそのノードより小さく、右部分木の全ての値が大きい
任意のノードについて、その値が左右どちらの子の値以上でもあり、結果として根に格納された値が木全体の最大値となる
全ての葉が同じ深さに並び、根から葉までの経路長が全て等しくなっている
各ノードが最大3個の子を持ち、子の個数に応じてキーを内部に保持する
正解
任意のノードについて、左部分木の全ての値がそのノードより小さく、右部分木の全ての値が大きい

2分探索木は各ノードを基準に左部分木の全値が小さく、右部分木の全値が大きいという順序条件を満たす。これにより根から比較しながら片側へ進む二分探索が可能になり、正しい。

?選択肢ごとの解説

ア ○2分探索木は各ノードを基準に左部分木の全値が小さく、右部分木の全値が大きいという順序条件を満たす。これにより根から比較しながら片側へ進む二分探索が可能になり、正しい。
イ ×ノードの値が左右の子以上で根が最大値になるのはヒープ(最大ヒープ)の性質であり、左右の大小関係を定める2分探索木とは異なる。
ウ ×全ての葉が同じ深さで経路長が等しいのは完全2分木や平衡木が近づける形であり、順序関係を定める2分探索木の定義そのものではない。
エ ×各ノードが複数の子と複数キーを持つのは多分木やB木の特徴であり、子が最大2個の2分探索木とは構造が異なる。

くわしく

2分探索木は左<親<右の順序条件で値を配置し、中順走査で昇順列が得られる。探索・挿入・削除は木の高さに比例し平均O(log n)だが、偏ると最悪O(n)になる。ヒープの大小条件やB木の多分岐と区別することが核心である。

本番での押さえどころ

試験のコツ

『左<親<右』が2分探索木、『親≧子(または親≦子)』がヒープと一文で区別する。中順走査=昇順も合わせて覚える。

覚え方

2分探索木は『左は小さい、右は大きい』と数直線の左右で覚える。根を中心に小と大が振り分けられる。

よくある誤り

2分探索木の左右の大小条件をヒープの親子条件と取り違える誤りが多い。順序か優先度かで区別する。

アルゴリズムとプログラミングの他の問題

この問題を、AIの8-ways解説つきで。

基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。

無料ではじめる →

ukamiru 過去問 · 基本情報技術者試験 · fe-a3-0125

【基本情報技術者試験】2分探索木の問題 — 解答・解説|ukamiru 過去問