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

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


問題文

次の2分探索木から要素12を削除したとき、その位置に別の要素を移動するだけで2分探索木を再構成するには、削除された要素の位置にどの要素を移動すればよいか。
基本情報技術者 2013年 春期 午前(科目A) 問05の問題画像

選択肢

9
10
13(正解)
14

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

二分探索木の要素削除【午前解説】

正解の理由

正解は (13)です。
ノード12は両方の部分木(左に10、右に14)を持つため、単純に削除すると左右の部分木をつなぎ直す必要が生じます。一般的な置換法として「削除ノードの右部分木の最小値(in-order successor)」を削除ノードの位置に移す方法があります。12の右部分木は根が14で、その最小値は左子の13です。13は元の位置で葉であり、13を12の位置に移して元の13のノードを単に削除すれば、すべてのノードの大小関係(左部分木 < 13 < 右部分木)が保たれます。したがって13が適切です。

解法ステップ

  1. 削除するノード(12)を確認し、子の有無を調べる。ここでは左右両方に子がある。
  2. 両子がある場合は置換候補を決める。通常は右部分木の最小値(in-order successor)または左部分木の最大値(in-order predecessor)。
  3. 右部分木(14を根とする部分木)の最小値を探索する:14の左子が13で、13は左にさらなる子がないため最小。
  4. 候補(13)を削除ノード(12)の位置にコピーまたは移動し、元の13のノードを削除(葉なので単に取り除く)。
  5. 結果として得られる木は二分探索木の性質(左は小さい、右は大きい)を満たす。

選択肢別の誤答解説

  • ア: 9 — 9は12の左部分木の奥(10の左)にあり、小さすぎて12の元の右部分木(14やその部分)よりも小さいため、12の位置に移すと右部分木との大小関係を保てず不適。
  • イ: 10 — 10は12の左部分木の根であり子(9,11)を持つため、10をそのまま12の位置に移すと元の10の位置の再接続が必要になり「移動するだけ」で済まない。
  • ウ: 13 — 正解。12の右部分木の最小値であり元の位置は葉なので、13を移動しても他の再接続が最小限で済み、BSTの順序性が保たれる。
  • エ: 14 — 14を上げるとその右部分木(15)は問題ないが、14は12より大きく、12の元の左部分木(10など)よりも適切に収まらない配置となる場合があるため不適切。

よくある誤解

  • 近い数値を選べばよい:数値が12に近い(例えば11や13)だけで正解とは限らず、木構造上の位置と元のノードの子の有無が重要です。
  • 親ノード(14や8)をそのまま上げれば良い:親や兄弟を移すと部分木の範囲が崩れる場合があり、単純に位置交換できるとは限りません。
  • 左部分木の最大値しか使えないと思い込む:どちらの方法(左の最大 / 右の最小)でも置換は可能だが、候補が葉や単子であるかを確認する必要があります。

補足コラム

  • 削除アルゴリズムの時間計算量は深さhに比例して (平衡木なら )。
  • 置換候補が「直接右子」である場合(例:削除ノードの右子に左子が存在しない)、その右子をそのまま上に持ってくる手法が最も単純です。
  • in-order successor(右最小)と in-order predecessor(左最大)はどちらを使ってもよいが、実装上は片方を選んで一貫して処理することが多いです。
  • 問題文の条件「その位置に別の要素を移動するだけで再構成する」では、移動元ノードが葉である候補が理想です。今回13は葉だったため最短手順で完了します。

FAQ

Q1: in-order predecessor(左部分木の最大)で置換できないのですか?
A1: できます。左部分木の最大(今回でいうと11)が存在し、元の位置での処理が簡単なら代替として用いることが可能です。ただし設問の選択肢には11がないため、13を選ぶのが正解です。
Q2: 置換候補が葉でない場合はどう処理しますか?
A2: 候補が葉でない場合はそのノードの子(通常は右子)を候補の位置に繋ぎ替えてから候補を上へ移す必要があり、「移動するだけ」では済みません。追加の再接続が必要です。
Q3: 常に右側の最小値を使うべきですか?
A3: 実装方針次第です。どちらを使っても木の順序性は保てますが、実装や木の形状に応じて片方が都合が良い場合があります。

関連キーワード: 二分探索木、BST、削除アルゴリズム、in-order successor、in-order predecessor、木構造、データ構造、探索木、アルゴリズム解析
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

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

クイズ画面へ遷移する

すぐに利用可能!

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

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