応用情報技術者 2024年 秋期 午前2 問05
問題文
次の2分探索木から要素12を削除したとき、その位置に別の要素を移動するだけで2分探索木を再構成するには、削除された要素の位置にどの要素を移動すればよいか。

選択肢
ア:9
イ:10
ウ:13(正解)
エ:14
2分探索木から要素12を削除したときの再構成【午前2 解説】
要点まとめ
- 結論:削除したノード12の位置には、その右部分木の最小値である13を移動させるのが正解です。
- 根拠:2分探索木の性質を保つため、削除ノードの右部分木の中で最小の値を代わりに配置する必要があります。
- 差がつくポイント:削除ノードの左右部分木のどちらから代替ノードを選ぶか、またそのノードが部分木の最小・最大かを正確に理解することが重要です。
正解の理由
ノード12を削除する際、12の右部分木(ノード14以下)から最小の値を持つノードを探します。ここでは13が14の左子であり、12の右部分木の中で最小の値です。13を12の位置に移動させることで、2分探索木の「左の子は親より小さい、右の子は親より大きい」という条件を崩さずに再構成できます。
他の選択肢は12の右部分木の最小値ではないため、木の順序が崩れてしまいます。
他の選択肢は12の右部分木の最小値ではないため、木の順序が崩れてしまいます。
よくある誤解
削除ノードの左部分木の最大値を使う場合もありますが、今回は右部分木が存在し、右部分木の最小値を使うのが基本です。
また、単に子ノードを上げればよいと考えがちですが、2分探索木の条件を満たすノードを選ぶ必要があります。
また、単に子ノードを上げればよいと考えがちですが、2分探索木の条件を満たすノードを選ぶ必要があります。
解法ステップ
- 削除対象ノード(12)の左右部分木を確認する。
- 右部分木が存在する場合、その部分木の最小値を探す。
- 右部分木の最小値ノード(13)を削除ノードの位置に移動する。
- 移動したノードの元の位置は空になるため、必要に応じて部分木を再接続する。
- 2分探索木の条件が保たれているか最終確認する。
選択肢別の誤答解説
- ア: 9 → 9は12の左部分木の左側にあり、12の右部分木の最小値ではないため不適切。
- イ: 10 → 10は12の左子の子であり、12の右部分木の最小値ではない。
- ウ: 13 → 正解。12の右部分木の最小値であり、2分探索木の条件を保つ。
- エ: 14 → 14は12の右子だが、右部分木の最小値ではなく、13より大きいため不適切。
補足コラム
2分探索木のノード削除には3つの基本パターンがあります。
- 葉ノードの削除:単純に削除。
- 子が1つのノードの削除:子ノードを親に繋ぎ直す。
- 子が2つのノードの削除:右部分木の最小値(後継ノード)または左部分木の最大値(前任ノード)を移動させる。
今回の問題は3番目のケースに該当します。
FAQ
Q: なぜ右部分木の最小値を使うのですか?
A: 右部分木の最小値は削除ノードより大きく、かつ右部分木内で最も小さいため、2分探索木の順序を保てます。
A: 右部分木の最小値は削除ノードより大きく、かつ右部分木内で最も小さいため、2分探索木の順序を保てます。
Q: 左部分木の最大値を使う場合はありますか?
A: はい。右部分木がない場合や設計によっては左部分木の最大値を使うこともあります。
A: はい。右部分木がない場合や設計によっては左部分木の最大値を使うこともあります。
関連キーワード: 2分探索木、ノード削除、木構造、データ構造、アルゴリズム

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

