平成29年度秋期 応用情報技術者試験 午前 問5

分野:アルゴリズムとプログラミング|実際に出題されたIPA過去問題

配列 A[1],A[2],…,A[n] で,A[1] を根とし,A[i] の左側の子を A[2i],右側の子を A[2i+1] とみなすことによって,2 分木を表現する。このとき,配列を先頭から順に調べていくことは,2 分木の探索のどれに当たるか。

  1.  行きがけ順(先行順)深さ優先探索
  2.  帰りがけ順(後行順)深さ優先探索
  3.  通りがけ順(中間順)深さ優先探索
  4.  幅優先探索
解答・解説を見る

正解:エ

AI解説

A[1]を根、A[i]の子をA[2i]とA[2i+1]とする配列表現では、A[1]がレベル1、A[2]〜A[3]がレベル2、A[4]〜A[7]がレベル3というように、配列の添字順がそのまま木のレベル(深さ)順・同一レベル内では左から右の順になっている。したがって配列を先頭から順に調べることは、浅い節から順に探索する幅優先探索に当たる。 ア: 行きがけ順(先行順)は根→左部分木→右部分木の順にたどる深さ優先探索であり、配列順とは一致しない。 イ: 帰りがけ順(後行順)は左部分木→右部分木→根の順にたどる深さ優先探索である。 ウ: 通りがけ順(中間順)は左部分木→根→右部分木の順にたどる深さ優先探索で、2分探索木から昇順にデータを取り出すときに使う。 エ: 正解。配列の先頭からの走査はレベル順の走査であり、幅優先探索に相当する。 💡 「A[i]の子がA[2i],A[2i+1]」はヒープで使われる完全2分木の配列表現。この形式では添字順=レベル順=幅優先、と覚えてしまうとよい。

出典:平成29年度 秋期 応用情報技術者試験 午前 問5 / 独立行政法人情報処理推進機構(IPA)
※Web掲載用に表記を一部変更しています。著作権はIPAに帰属します。
📱 演習アプリで解く(無料・登録不要・2,640問収録)

「アルゴリズムとプログラミング」分野の攻略ポイント

データ構造・アルゴリズム・探索と整列・計算量・擬似言語・プログラム言語・データ記述言語が対象です。擬似言語のトレースは時間はかかるものの、落ち着いて表を書けば必ず正解にたどり着く「確実に取れる」問題です。

アルゴリズムとプログラミングの攻略ポイントをすべて見る(要点6項目・ひっかけ3項目)→

同じ分野(アルゴリズムとプログラミング)の過去問