2分探索木からのノード削除と再構成

定義された再帰処理 $f(ノード n)$ の走査順序を確認します。 まず右部分木を再帰的に走査($f(ノード r)$) 次に左部分木を再帰的に走査($f(ノード l)$) 両方の部分木の処理が完了した後,そのノード自身のデータを出力(後順走査・ポストオーダーの変形:右 $\to$ 左 $\to$ 根) 図の木構造に対してこの走査を適用します。 根ノード $+$:右の子 $\div$ を先に処理し,次に左の子 A を処理し,最後に $+$ を出力。 ノード $\div$:右の子 $-$ を先に処理し,次に左の子 $\times$ を処理し,最後に $\div$ を出力。 ノード $-$:右の子 E(葉なので出力:E),左の子 D(葉なので出力:D),最後に $-$ を出力 $\to$ 出力列は「$\text{ED}-$」 ノード $\times$:右の子 C(葉なので出力:C),左の子 B(葉なので出力:B),最後に $\times$ を出力 $\to$ 出力列は「$\text{CB}\times$」 ノード $\div$ の出力完了 $\to$ 出力列は「$\text{ED}-\text{CB}\times\div$」 左の子 A の処理:葉なので A を出力 $\to$「$\text{A}$」 最後に根ノード $+$ を出力 $\to$「$+$」 これらを順に結合すると,全体の出力は「$\text{ED}-\text{CB}\times\div\text{A}+$」となります。 したがって,正解はエとなります。

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

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

  1. ノード nn の右に子ノード rr があれば,f(ノードr)f(ノード r) を実行

  2. ノード nn の左に子ノード ll があれば,f(ノードl)f(ノード l) を実行

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

  4. 終了

問6 2分木
出典令和6年度 春期 高度情報処理技術者試験 午前Ⅰ
ア
+÷−ED×CBA+ \div - \text{ED} \times \text{CBA}
イ
ABC×DE−÷+\text{ABC} \times \text{DE} - \div +
ウ
E−D÷C×B+A\text{E} - \text{D} \div \text{C} \times \text{B} + \text{A}
エ
ED−CB×÷A+\text{ED} - \text{CB} \times \div \text{A} +