質問編集履歴
2
疑問点の編集をさせて頂きました
test
CHANGED
File without changes
|
test
CHANGED
@@ -40,7 +40,19 @@
|
|
40
40
|
|
41
41
|
|
42
42
|
|
43
|
+
疑問点の仮説をまとめさせていただきました。
|
44
|
+
|
45
|
+
- 1のリーフノードに届くまで3回再帰しています。例えば初回の再帰が呼ばれると、ノード自体は5に移動すると思いますが、この時点では tree.Left != nil のif文に入るため、appendまでは行かず、一度ここで止まり(?)処理待ちの状態となる
|
46
|
+
|
47
|
+
- そして, 1に到達すると、if文には入らないため、append, 次のif分を処理し、一度return(?)する
|
48
|
+
|
49
|
+
- その後、処理が止まっていた再帰の処理が新しい順から始まる
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
|
54
|
+
|
43
|
-
|
55
|
+
おそらくこちらの流れなのだと思うのですが、再帰をする際にif文にはまると処理待ちの状態になるのか・1に到達してreturnすると処理待ちがなぜ再開するのかが、あまりスッキリしていません。加えて、現状の理解で間違っている点がありましたらご指摘いただけると幸いです。よろしくお願い致します。
|
44
56
|
|
45
57
|
```Go
|
46
58
|
|
1
表記方法の修正
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
Golangにおけるバイナリーツリー(BST) の
|
1
|
+
Golangにおけるバイナリーツリー(BST) の再帰の仕方について
|
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Golangのバイナリーツリー(BST)における、
|
1
|
+
Golangのバイナリーツリー(BST)における、再帰(Recursion) のやり方について疑問があり質問させていただきます。例えば以下のようなバイナリーツリーが構成されており、こちらを再帰を利用することで最小値~最大値を順番とするスライスを生成するとします。
|
2
2
|
|
3
3
|
(この場合であれば:[1, 2, 5, 5, 10, 15, 22]が正解)
|
4
4
|
|
@@ -40,7 +40,7 @@
|
|
40
40
|
|
41
41
|
|
42
42
|
|
43
|
-
なぜ、こちらの
|
43
|
+
なぜ、こちらの再帰を利用したアルゴリズムで成り立つのか、また現状の理解で間違っている点がありましたらご指摘いただけると幸いです。よろしくお願い致します。
|
44
44
|
|
45
45
|
```Go
|
46
46
|
|