応用情報技術者試験ナビ ロゴ 応用情報技術者試験ナビ
合格発表日:2025年7月3日(あと66日)

応用情報技術者試験 令和3年春 午前問6 解説付き過去問

問題

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

正解

解説

この問題は、配列を使用して2分木を表現する方法と、その探索方法がどの木のトラバーサル方法に対応するかを理解することが求められます。

  1. 2分木の配列表現
    配列による2分木の表現では、配列のインデックスを利用して、各要素がノードの役割を果たします。根元素はA[1]で、任意の要素A[i]について、左の子ノードはA[2i]、右の子ノードはA[2i+1]に位置します。ただし、これは2iと2i+1が配列の長さnを超えない場合に限ります。

  2. 配列の順番と2分木の探索
    配列を先頭から順に調べるという操作は、2分木の各レベルを左から右へと順に訪れることと等価です。例えば、最初の要素から順に見ていくと、根(A[1])、その次に根の子ノード(A[2], A[3])、その次にそれらの子ノード(A[4], A[5], A[6], A[7])という順になり、これは2分木のレベル毎に横断していく幅優先探索(Breadth-First Search, BFS)に相当します。

したがって、配列を先頭から順に調べることは、2分木における幅優先探索に当たります。