2024年 春期 応用情報技術者 午前 問6

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

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

 ア  +÷-ED×CBA  イ  ABC×DE-÷+  ウ  E-D÷C×B+1  エ  ED-CB×÷A+



答え E


解説
f(ノードn)を問題の2分木に適用するとまず「1」の処理で根から右の子をたどって一番下(葉)まで行ってデータを出力するので最初に出力されるのは“E”である。 次に「2」の処理で“E”の親の左の子を処理して“D”を出力、「3」の処理で“D”の親の“-”を出力する。
後は同じように“-”の親の左の子のさらに右の子の“C”を出力、“C”の親の左の子の“B”を出力、“B”の親の“×”を出力、その親の“÷”を出力、その親(根)の左の子の“A”を出力し、その親(根)の“+”を出力して終了なので、出力結果はED-CB×÷A+(エ)になる。


キーワード
・再帰的処理

キーワードの解説
  • 再帰的処理(recursive)
    処理(関数)の中で自分自身の処理を呼び出すことです。
    再帰を使用することで、処理を単純に表すことができます。

もっと、「再帰的処理」について調べてみよう。

戻る 一覧へ 次へ