過去問解きまくり研究所 ホーム

令和6年度 春期 午前 問6

アルゴリズム

2分木に関する問題

各ノードがもつデータを出力する再帰処理 f(ノード n)を定義した。この処理を,図の 2 分木の根(最上位のノード)から始めたときの出力はどれか。

〔f(ノード n)の定義〕1. ノード n の右に子ノード r があれば,f(ノード r)を実行 / 2. ノード n の左に子ノード l があれば,f(ノード l)を実行 / 3. 再帰処理 f(ノード r),f(ノード l)を未実行の子ノード,又は子ノードがなければ,ノード自身がもつデータを出力 / 4. 終了

〔図〕根は +。+ の左の子が A,右の子が ÷。÷ の左の子が ×,右の子が −。× の左の子が B,右の子が C。− の左の子が D,右の子が E。

答えと解説を見る

✓ これが正解エED−CB×÷A+

解説

右の子・左の子・自分の順に出力されます。

設問は、定義された再帰処理を根から始めたときの出力の並びを選ばせています。軸になるのは、定義の三つの手順を上から読んだときの順序です。右の子があれば先にそちらを処理し、次に左の子を処理し、どちらも済んでから自分のデータを出すので、右・左・自分の順に並びます。小さい部分木から確定させると迷いません。減算の記号を根とする部分は、E と D と記号自身の順になります。乗算の記号を根とする部分は、C と B と記号自身の順です。除算の記号を根とする部分は、右にある減算側を先に、次に左の乗算側を処理し、最後に自分を出すので、これらをつないだ並びになります。根では除算側を処理した後に A を出し、最後に加算の記号を出すため、ED−CB×÷A+ が得られます。ノードは 9 個なので、出力も 9 文字になることを確かめられます。

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

出典:令和6年度 春期 応用情報技術者試験 午前 問6

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)