SkillStack
テクノロジ系3 / 30問

高度情報処理技術者試験・情報処理安全確保支援士試験 令和6年度 春期 午前I 問3

各ノードがもつデータを出力する再帰処理f(ノード n)を定義した。この処理を、図の2分木の根(最上位のノード)から始めたときの出力はどれか。 〔f(ノード n)の定義〕 1. ノードnの右に子ノードrがあれば、f(ノード r)を実行 2. ノードnの左に子ノードlがあれば、f(ノード l)を実行 3. 再帰処理f(ノード r)、f(ノード l)を未実行の子ノード、又は子ノードがなければ、ノード自身がもつデータを出力 4. 終了

高度情報処理技術者試験・情報処理安全確保支援士試験 令和6年度 春期 午前I 問3の図表

選択肢を押すと答え合わせができます。

正解と解説を見る

【正解】エ

図の二分木では、根が「+」、その左の子がA、右の子が「÷」です。「÷」の左には「×」があり、その子は左がB、右がCです。「÷」の右には「-」があり、その子は左がD、右がEです。処理は各ノードで、右の子、左の子、ノード自身の順に進みます。まず根の右側の「÷」へ進み、その右側の「-」ではE、D、「-」の順に出力するので「ED-」です。次に「÷」の左側の「×」ではC、B、「×」の順となり「CB×」です。その後に「÷」を出力するため、右部分木全体は「ED-CB×÷」となります。続いて根の左のA、最後に根の「+」を出力するので、全体は「ED-CB×÷A+」となり、エが正解です。

アの「+÷-ED×CBA」は誤りです。これは各ノード自身を先に出力し、その後に右、左の順でたどる先行順に相当します。

イの「ABC×DE-÷+」は誤りです。これは左、右、ノード自身の順でたどる一般的な後行順です。

ウの「E-D÷C×B+A」は誤りです。これは右、ノード自身、左の順でたどる中間順に相当します。

【ポイント】 再帰的な木の走査では、ノード自身を出力する位置と、左右のどちらを先に処理するかを分けて確認します。 本問は一般的な左優先ではなく、右、左、自分という順序です。

出典:令和6年度 春期 高度情報処理技術者試験・情報処理安全確保支援士試験 午前I 問3
※ 解説は SkillStack 編集部が作成したものです。Web 表示のため、図表の配置や表記を一部改めています。

この回の30問を、アプリで通しで解く

  • 本番と同じ問題数・制限時間で通し演習(模試モード)
  • 間違えた問題は自動で「復習すべき問題」に回る
  • 解説で分からない点はAIに質問できる
SkillStackで無料で始める