この概念が出た関連問題

この試験の対策ガイド

情報処理安全確保支援士試験 対策ガイド

合格率・勉強法・参考書の選び方をまとめています

見る →
答えと解説を見る(先に解くのがおすすめ)

正解は エ

解説

再帰処理 f(n) の定義は「①右の子があれば f(右) → ②左の子があれば f(左) → ③未実行の子がなければノード自身を出力」です。これは「右→左→自分」の順で出力する後順(ポストオーダー)の変形です。図の2分木(問題文の選択肢から逆算すると「A+((B×C)÷(D-E))」を表す式木)を想定します。根が「+」、左子が「÷」、右子が「A」。÷の左子が「×」、右子が「-」。×の左は「B」右は「C」。-の左は「D」右は「E」。右優先の後順走査:f(A)→A出力、次にf(÷)でf(-E側)→f(E),f(D)→E,D出力→f(×側)→f(C),f(B)→C,B出力→÷出力、→+出力。出力順:A、E、D、-、C、B、×、÷、+。選択肢dの「ED-CB×÷A+」と一致します。

なぜ他の選択肢は違うのか

選択肢 ア
++−ED×CBAは根から上位演算子が先に出力されており、前順(プレオーダー)的な出力と近いですが、順序が一致しません。定義の「右→左→自分」を無視した出力です。
選択肢 イ
E-D÷C×B+Aは中順(インオーダー)的な出力の変形であり、定義の後順処理ではありません。
選択肢 ウ
ABC×DE-÷+は「左→右→自分」の標準的後順(ポストオーダー)の出力です。しかし本問の定義は「右→左→自分」なので順序が逆になります。

解くときのポイント

本問の再帰定義は「右→左→自分」の後順走査。通常の後順(左→右→自分)との違いに注意。選択肢を見比べる際は根の演算子(+)が最後に来ることを確認し、直前に÷が来ることで選択肢を絞り込める。