本文へスキップ

技術士試験(情報工学部門)・情報技術者試験。ファーストマクロ。


Since 2016.4.19

令和6年度 春期 応用情報技術者試験問題と解説

問6

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

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

・1. ノードn の右に子ノードr があれば、f(ノードr) を実行

・2. ノードn の左に子ノード rがあれば、f(ノードl) を実行

・3. 再帰処理 f(ノードr)、f(ノードl) を未実行の子ノード、又は子ノードがなければ、ノード自身がもつデータを出力

・4. 終了

 

ア +÷−ED×CBA

イ ABC×DE−÷+

ウ E−D÷C×B+A

エ ED−CB×÷A+

正解


解説

以下のように出力していく。
最上位のノードは+であるのでf(ノード+)を実行
 ノード+の右に子ノード÷があるので f(ノード÷) を実行
  ノード÷の右に子ノード−があるので f(ノード−) を実行
   ノード−の右に子ノードEがあるので f(ノードE) を実行
    未実行のノードがないのでEを出力
   ノード−の左に子ノードDがあるので f(ノードD) を実行
    未実行のノードがないのでDを出力
   未実行のノードがないので−を出力
  ノード÷の左に子ノード×があるので f(ノード×) を実行
   ノード−の右に子ノードCがあるので f(ノードC) を実行
    未実行のノードがないのでCを出力
   ノード−の左に子ノードBがあるので f(ノードB) を実行
    未実行のノードがないのでBを出力
   未実行のノードがないので×を出力
  未実行のノードがないので÷を出力
 ノード+の左に子ノードAがあるので f(ノードA) を実行
  未実行のノードがないのでAを出力
 未実行のノードがないので+を出力
終了

問5 目次 問7