No.109 2分木の各ノードがもつ記号を出力する再帰的なプログラムProc(n)の定義は,次のとおりである。
このプログラムを,図の2分木の根(最上位のノード)に適用したときの出力はどれか。
Proc(ノードn){
nに左の子lがあればProc(l)を呼び出す
nに右の子rがあればProc(r)を呼び出す
nに書かれた記号を出力する
}
このプログラムを,図の2分木の根(最上位のノード)に適用したときの出力はどれか。
Proc(ノードn){
nに左の子lがあればProc(l)を呼び出す
nに右の子rがあればProc(r)を呼び出す
nに書かれた記号を出力する
}
⭕️
❌
💾
🖊 | ☑️ |
⭕️ | [[ AnswerCalc[0] ]] % | A | [[ AnswerCalc[1] ]] |
与えられたプログラムを設問の2分木に適用すると次のようになります。
- 最初に2分木の根である"+"から始まります。
[proc(+)]
"+"の左には"a"があるので、Proc(a)が呼び出されます。 - [Proc(a)]
"a"の左右にはノードがないので、aを出力し、Proc(+)の処理に戻ります。 - "+"の右には"*"があるので、Proc(*)が呼び出されます。
- [Proc(*)]
"*"の左には"-"があるので、Proc(-)が呼び出されます。 - [Proc(-)]
"-"の左には"b"があるので、Proc(b)が呼び出されます。 - [Proc(b)]
"b"の左右にはノードがないので、bを出力し、Proc(-)の処理に戻ります。 - "-"の右には"c"があるので、Proc(c)が呼び出されます。
- [Proc(c)]
"c"の左右にはノードがないので、cを出力し、Proc(-)の処理に戻ります。 - Proc(-)は、-を出力し、Proc(*)に戻ります。
- "*"の右には"d"があるので、Proc(d)が呼び出されます。
- [Proc(d)]
"d"の左右にはノードがないので、dを出力し、Proc(*)の処理に戻ります。 - Proc(*)は、*を出力し、Proc(+)に戻ります。
- Proc(+)は、+を出力し、処理が終了します。
💾
✔️
[[ d.CommentTxt ]] |
< | > |
🥇 |