戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2016年 春期 午前(科目A)05


問題文

10個の節(ノード)から成る次の2分木の各節に、1から10までの値を一意に対応するように割り振ったとき、節a、bの値の組合せはどれになるか。ここで、各節に割り振る値は、左の子及びその子孫に割り振る値よりも大きく、右の子及びその子孫に割り振る値よりも小さくするものとする。
基本情報技術者 2016年 春期 午前(科目A) 問05の問題画像

選択肢

a=6, b=7(正解)
a=6, b=8
a=7, b=8
a=7, b=9

🔒 解説は解答すると表示されます

二分探索木の節の値配置【午前解説】

正解の理由

正解は です。理由は二分探索木の条件(各ノードは左部分木のすべての値より大きく、右部分木のすべての値より小さい)から、木を中間順(左→根→右)に走査すれば値は小さい順に並びます。
図の構造から左部分木は節が4個(ラベル4を含む)あり、それらがを占め、根の5は値になります。右部分木は残りのを占め、さらに右部分木内部の枝振り(中間ノードがaの右子になっている)により、a は右部分木の最小(すなわち6)になり、その中で左子に位置するb が次に小さい値(7)になります。

解法ステップ

  1. 木全体の節数が10個で、値はを一意に割り当てることを確認。
  2. 中間順(in-order)走査が二分探索木では昇順になることを利用する。
  3. 左部分木の節数を数える(図では4個)ので、左部分木がを占め、根がと確定する。
  4. 右部分木は残りを占める。a の子の構造を見て、a の左部分木の節数が0である(=中間ノードはaの右子である)と判断する。
  5. したがって a は右部分木の最小(6)で、a の右子の中間ノードの左子である b はその次(7)となる。

選択肢別の誤答解説

  • : a=6, b=7 — 正しい。中間順の順位付けと部分木の節数から一意に決まる。
  • イ: a=6, b=8 — b が8 だとすると a の直下で b が a より大きいが中間ノードの左子が8となり、残りの順位調整が合わなくなる。実際は b は a の直後の順位(7)になる。
  • ウ: a=7, b=8 — a=7 とすると右部分木内で a の左に置かれるべき節が無くなるか、ノード数配分と矛盾して root=5 の右側の最小が6であるはずという条件に反する。
  • エ: a=7, b=9 — a を7 とするには右部分木に6が存在するはずだが図の配置(a より上位の右側先頭)がそれを許さないため矛盾する。

よくある誤解

  • 中間ノードの位置(a の子が左子か右子か)を図の見た目だけで誤判断し、a の順位を間違える。
  • 「ラベル4だから値は4とは限らない」と混乱するが、木全体のノード数と中間順の順位から値4であることが確定する。
  • 中間順(in-order)と前順・後順を混同して配置を決めてしまうミス。

補足コラム

中間順(in-order)走査は二分探索木に値を昇順に並べる性質があるため、「ノードの順序(順位)」を数えるだけで各節に割り当てる具体的な値が決まります。本問では左部分木の節数がちょうど4で根が5なので、その時点で左右に振られる値の範囲が確定し、右部分木内部の左右分岐(中間ノードが右子)を確認すれば a の値が最小であることが直ちに導けます。具体的な割当例(右部分木): a=6、b=7、中間ノード=8、さらに下のノード=9、10。
(参考イメージの値割当)
  • 左部分木: 1,2,3,4(4は図の4に対応)
  • 根: 5
  • 右部分木(中間順): 6(a), 7(b), 8(中間), 9, 10

FAQ

Q. なぜ中間順(in-order)を使うのですか?
A. 二分探索木の定義により中間順走査をすると値が昇順になるため、節数から順位(値)を直接割り当てられるからです。
Q. 図の中間ノードが上下中央に描かれているとき、左子か右子か判別しづらいのですがどう判断しますか?
A. ノード数で矛盾が出ないか検算します。中間ノードが左子なら a の左部分木の節数が増え、a の順位(値)が変わります。問題の与えられた選択肢と全体節数との整合性で判断できます。
Q. ラベルされたノードの数字(例:4)がそのまま値とは限らないのでは?
A. ラベルが既に数値(4や5)で与えられている場合はその節の値が決まっていると解釈します。ここでは4と5が図に書かれているので、それぞれの節はその値を持ちます。

関連キーワード: 二分探索木、二分木、in-order、中間順走査、ノード順位、木構造、順序統計、アルゴリズム
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

基本情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について