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

分野:アルゴリズムとプログラミング(データ構造・アルゴリズム・探索整列・計算量の実際・擬似言語・プログラム言語・データ記述言語)|実際に出題された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]とする配列表現は、完全2分木を「浅い階層から順に、同じ深さでは左から右へ」並べたものである(ヒープと同じ表現)。したがって配列を先頭から順に調べることは、根に近いレベルから順に同じ深さの節点を横に走査すること、すなわち幅優先探索に当たる。 ア: 行きがけ順(先行順)は「根→左部分木→右部分木」とたどる深さ優先探索であり、配列の添字順とは一致しない。 イ: 帰りがけ順(後行順)は「左部分木→右部分木→根」とたどる深さ優先探索である。 ウ: 通りがけ順(中間順)は「左部分木→根→右部分木」とたどる深さ優先探索で、2分探索木では昇順に取り出せる順序である。 エ: 正解。添字1,2,3,…の順はレベル(深さ)順・左から右の走査であり、幅優先探索に相当する。 💡 「A[2i]とA[2i+1]が子」はヒープの配列表現と同じで、添字順=レベル順と覚える。深さ優先3種(先行・中間・後行)は根を訪れるタイミングで区別する。

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

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

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

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

同じ分野(アルゴリズムとプログラミング(データ構造・アルゴリズム・探索整列・計算量の実際・擬似言語・プログラム言語・データ記述言語))の過去問