各ノードが持つデータを出力する再帰処理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+(エ)になる。
【キーワード】
・再帰的処理