メインコンテンツへスキップ
基本情報技術者2014年度 春期午前6

2014年度 春期 基本情報技術者 午前6

難度標準

2分木の各ノードがもつ記号を出力する再帰的なプログラム Proc(n)の定義は、次のとおりである。このプログラムを、図の2分木の根(最上位のノード)に適用したときの出力はどれか。

Proc(n) {

nに左の子lがあればProc (l) を呼び出す。

}

nに右の子rがあればProc (r) を呼び出す。

nの記号を出力して終了する。

選択肢

+a*-bcd
a+b-c*d
abc-d*+
b-c*d+a

解説

結論 → 詳細 → 補足 の 3 層構成

展開
結論Layer 1

この問題は、与えられた再帰的なプログラム Proc(n) を2分木の根に適用したときの出力を求めるものです。プログラムの定義は、左の子があれば左の子に対して再帰的に Proc を呼び出し、次に右の子があれば右の子に対して再帰的に Proc を呼び出し、最後に現在のノードの記号を出力するという順序です。これは、2分木の「後順走査」(Post-order traversal)に相当します。後順走査では、左部分木、右部分木、そして根の順に処理を行います。

詳細Layer 2

選択肢ウが正解である理由は、後順走査の順序に従って記号が出力されるからです。プログラム Proc(n) の定義を木構造に適用すると、まず左側の部分木全体が処理され、次に右側の部分木全体が処理され、最後に現在のノードの記号が出力されます。これにより、演算子の左オペランド、右オペランド、そして演算子自身の順に処理が進み、最終的にウの順序で出力されることが期待できます。

補足Layer 3

他の選択肢は、この後順走査の順序と一致しないため不適切です。例えば、アは記号の出力順序が再帰呼び出しの順序や葉ノードと根ノードの関係から見て不正です。イは、前順走査(Pre-order traversal)、すなわち根、左、右の順序や、中順走査(In-order traversal)、すなわち左、根、右の順序での走査結果に似ていますが、後順走査とは異なります。エは、左部分木、右部分木、根という後順走査の基本的な考え方から外れた順序で記号が出力されているため不適切です。

この解説は?
この解説は AI 生成です(詳細)

解説テキストは Google Gemini に IPA 公式の問題文・公式解答を入力して生成しました。 人間によるレビューを行ったものと、未レビューのものが混在します。

AI は事実誤認・選択肢の取り違え・最新法令の反映漏れ等を含む可能性があります。 重要な判断は必ず IPA 公式 PDF または最新の参考書でご確認ください。

解説の検証プロセス・誤り報告フローは 運営透明性レポートで公開しています。

※ AI 生成の解説は誤りを含む可能性があります。重要な判断は IPA 公式資料でご確認ください。

最終更新:

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

この問題の理解を「分野全体の力」に広げるための足がかり

何が問われるか
計算量(O 記法)・基本データ構造・典型アルゴリズム(探索・整列)・再帰の挙動を読む力。
学習の進め方
擬似コードを実際にトレースして変数の遷移を表に書き出す習慣を付ける。スタック/キュー/木の図示が定着の鍵。
関連キーワード
計算量二分探索クイックソート再帰スタックキュー木構造
この分野の問題をもっと解く
AI コパイロット

この問題を AI と深掘りする

用語解説・選択肢分析・類題生成をその場で対話。クイズモードでは解答→解説がゼロ遷移。

クイズモードで開く

共有

X でシェアLINE

ショート動画

関連する問題

アルゴリズムとプログラミング の他の問題