令和3年度 春期 応用情報技術者試験 午前 問6
配列 で, を根とし, の左側の子を ,右側の子を とみなすことによって,2分木を表現する。このとき,配列を先頭から順に調べていくことは,2分木の探索のどれに当たるか。
解答・解説
正解: エ. 幅優先探索
配列の各要素は、次のように2分木のノードに対応付けられます。
- : 根(深さ0)
- : 深さ1のノード(根の子)
- : 深さ2のノード
一般に、親ノードのインデックス に対して左の子が 、右の子が となる構造では、インデックスが小さい順に同じ深さ(階層)のノードが並ぶことになります。
したがって、配列を先頭()から順に調べるということは、2分木を根から開始して、同じ深さのノードを左から右へ順に訪問していくことに相当します。このように、深さごとに階層レベルで探索を進める手法を 幅優先探索 と呼びます。
各選択肢の解説
- ア:行きがけ順(先行順)深さ優先探索
「根 左の部分木 右の部分木」の順に深く探索を進めます。配列の先頭から順に調べる順序とは一致しません。 - イ:帰りがけ順(後行順)深さ優先探索
「左の部分木 右の部分木 根」の順に探索します。根を最後に訪問するため誤りです。 - ウ:通りがけ順(中間順)深さ優先探索
「左の部分木 根 右の部分木」の順に探索します。配列の先頭から順に調べる順序とは一致しません。 - エ:幅優先探索
正解です。木を階層順(深さ順)に探索するため、インデックス順に配列を走査する動作に一致します。