応用情報 午前ラボ

学習の画面へ

2 分木の再帰処理の出力順

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

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

〔f(ノード n) の定義〕

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

図

  1. ア +÷-ED×CBA
  2. イ ABC×DE-÷+
  3. ウ E-D÷C×B+A
  4. エ ED-CB×÷A+
正解と解説を見る

正解: エ

ポイント

f は「右の子 → 左の子 → 自分」の順に処理します (右から見た後置順)。

  1. 根 (+) では、まず右の子 (÷) の f を実行します。
  2. ÷ では、右の子 (−) → 左の子 (×) → ÷ の順です。
  3. − は E, D, − の順 (右の子 E → 左の子 D → 自分)、× は C, B, × の順に出力します。
  4. これらをつなぐと E D − C B × ÷ となり、最後に左の子 A、自分の + を出力して ED-CB×÷A+ になります。

「アルゴリズムとプログラミング」をこのサイトで解く (記録・間違えた問題の解き直し・AI教師への質問)