回答編集履歴
2
段階追加
answer
CHANGED
@@ -63,8 +63,26 @@
|
|
63
63
|
"left をルートとしたツリー" を表示すれば良いはずです。
|
64
64
|
恐らくはココが一番のキモと思います。
|
65
65
|
|
66
|
-
ここで、「ツリーの一部はまたツリー」を処理する為に再帰を使うことになります。
|
66
|
+
ここで、「ツリーの一部はまたツリー」を処理する為に再帰を使うことになります。
|
67
67
|
```c
|
68
|
+
printf(n->label);
|
69
|
+
printf("(");
|
70
|
+
if(n->left == NULL) {
|
71
|
+
printf("NULL");
|
72
|
+
} else {
|
73
|
+
printTree(n->left);
|
74
|
+
}
|
75
|
+
printf(",");
|
76
|
+
if(n->right == NULL) {
|
77
|
+
printf("NULL");
|
78
|
+
} else {
|
79
|
+
printTree(n->right);
|
80
|
+
}
|
81
|
+
printf(")");
|
82
|
+
```
|
83
|
+
これで完成・・・ではあるのですが、コードを注意してみると、left や right が NULL の場合の処理は printTree に既に「if(n == NULL) {}」としてあります。
|
84
|
+
ですのでそれぞれの if 文は省くことが出来ます。(関数全体を表記します。)
|
85
|
+
```c
|
68
86
|
void printTree(Node *n) {
|
69
87
|
if(n == NULL) {
|
70
88
|
printf("NULL");
|
1
僅かに説明修正
answer
CHANGED
@@ -57,7 +57,7 @@
|
|
57
57
|
}
|
58
58
|
printf(")");
|
59
59
|
```
|
60
|
-
・・・これでは left も right も NULL じゃない場合に何も出力されません。
|
60
|
+
・・・これでは left も right もそれぞれ NULL じゃない場合に何も出力されません。
|
61
61
|
では、例えば left が NULL では無い場合、何を表示するのでしょうか。
|
62
62
|
|
63
63
|
"left をルートとしたツリー" を表示すれば良いはずです。
|