基本情報技術者試験のサンプル問題を解こう!(5)(科目A)「2 分探索木」

スポンサーリンク
高校生くらいの女の子がプログラミングをsしている IT系

基本情報技術者試験のサンプル問題(科目A)を解いてみよう。

今回のテーマは、「2 分探索木」である。

問5
2 分探索木になっている2 分木はどれか。

正解:イ

まずは、二分探索木(BST: Binary Search Tree)の定義を確認しよう。


✅ 二分探索木(BST)の定義

任意のノード(節)において、

  • 左部分木のすべてのノード < 親ノード
  • 右部分木のすべてのノード > 親ノード
  • 各ノードで再帰的にこの条件を満たす

各選択肢を検討しよう。


【ア】

  • ノード16:
    • 左:15(✅)/右:19(✅)
  • ノード15:
    • 左:10(✅)
    • 右:14(❌)→ 15より小さいので左にあるべきだが、右にある

➡️ ❌ BST違反(ノード15の右に14がある)


【イ】

  • ノード17:
    • 左:14(✅)/右:19(✅)
  • ノード14:
    • 左:10(✅)/右:16(✅)※16 > 14 < 17なので適切
  • ノード19:
    • 左:18(✅)※18 > 17

➡️ ✅ すべてのノードでBSTの条件を満たしている


【ウ】

  • ノード16の右:14(❌)→ 14 < 16 なので左にあるべき

➡️ ❌ BST違反(ノード16の右に14)


【エ】

  • ノード20の右:19(✅)
  • ノード19の左:15(✅)/右:16(❌)→ 16 < 20 なので19の右にあってはいけない
  • ノード18の右:14(❌)→ 14 < 18 なのに右にある

➡️ ❌ 複数のBST違反


✅結論

正解は【イ】となる。

コメント

タイトルとURLをコピーしました