teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

段階追加

2021/11/13 09:59

投稿

jimbe
jimbe

スコア13355

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

僅かに説明修正

2021/11/13 09:59

投稿

jimbe
jimbe

スコア13355

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 をルートとしたツリー" を表示すれば良いはずです。