質問編集履歴
6
リンクの追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
### 前提・実現したいこと
|
1
|
+
[リンク内容](https://onlinejudge.u-aizu.ac.jp/courses/lesson/1/ALDS1/8/ALDS1_8_A)### 前提・実現したいこと
|
2
2
|
|
3
3
|
|
4
4
|
|
5
誤字
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
二分探索木に最初の値を
|
1
|
+
二分探索木に最初の値を挿入するときのプログラムの挙動について
|
test
CHANGED
File without changes
|
4
タイトルの訂正
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
二分探索木に最初の値をを挿入するときのプログラムの挙動について
|
test
CHANGED
File without changes
|
3
書式の改善
test
CHANGED
File without changes
|
test
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
|
11
11
|
|
12
12
|
|
13
|
-
という問題なのですが、これをC++で実装するにあたって模範解答を見ると以下のようになってました。しかしこのinsert関数の部分ですが、一番初めにデータを挿入するとき
|
13
|
+
という問題なのですが、これをC++で実装するにあたって模範解答を見ると以下のようになってました。しかしこのinsert関数の部分ですが、一番初めにデータを挿入するときrootにどのようにデータが追加されるか理解できません。これだと、xがrootで初期化されていて、whileループに入り、yにxのrootが代入されて, yがNILでなくなってしまうのではないでしょうか。そうなるとif(y == NIL)が偽になってしまい、結局rootが定まらなくなってしまうと思います。もしwhileループを経ないのであれば、どのタイミングでxにNILが代入されるのでしょうか。この点について解説していただけますか。
|
14
14
|
|
15
15
|
### 該当のソースコード
|
16
16
|
|
2
書式の改善
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,22 +1,24 @@
|
|
1
|
-
|
1
|
+
### 前提・実現したいこと
|
2
2
|
|
3
|
+
|
4
|
+
|
3
|
-
T に対し、以下の命令を実行するプログラムを作成してください。
|
5
|
+
二分探索木T に対し、以下の命令を実行するプログラムを作成してください。
|
4
6
|
|
5
7
|
|
6
8
|
|
7
9
|
insert k: Tにキー k を挿入する。
|
8
10
|
|
9
|
-
|
11
|
+
|
12
|
+
|
13
|
+
という問題なのですが、これをC++で実装するにあたって模範解答を見ると以下のようになってました。しかしこのinsert関数の部分ですが、一番初めにデータを挿入するときのrootにどのようにデータが追加されるか理解できません。これだと、xがrootで初期化されていて、whileループに入り、yにxのrootが代入されて, yがNILでなくなってしまうのではないでしょうか。そうなるとif(y == NIL)が偽になってしまい、結局rootが定まらなくなってしまうと思います。もしwhileループを経ないのであれば、どのタイミングでxにNILが代入されるのでしょうか。この点について解説していただけますか。
|
14
|
+
|
15
|
+
### 該当のソースコード
|
10
16
|
|
11
17
|
|
12
18
|
|
13
|
-
|
19
|
+
```c++
|
14
20
|
|
15
|
-
|
16
|
-
|
17
|
-
#```c++
|
18
|
-
|
19
|
-
include <cstdio>
|
21
|
+
#include <cstdio>
|
20
22
|
|
21
23
|
#include <cstdlib>
|
22
24
|
|
@@ -104,6 +106,8 @@
|
|
104
106
|
|
105
107
|
}
|
106
108
|
|
109
|
+
|
110
|
+
|
107
111
|
void inorder(Node *u)
|
108
112
|
|
109
113
|
{
|
@@ -178,10 +182,4 @@
|
|
178
182
|
|
179
183
|
}
|
180
184
|
|
181
|
-
|
182
|
-
|
183
185
|
```
|
184
|
-
|
185
|
-
となっていました。しかしこのinsert関数の部分ですが、一番最初のデータを挿入するときの挙動が理解できません。これだと、xがrootで初期化されていて、whileループに入り、yにxのrootが代入されて, yがNILでなくなってしまうのではないでしょうか。そうなるとif(y == NIL)が偽になってしまい、結局rootが定まらなくなってしまうと思ったのですが、どうなのでしょうか。
|
186
|
-
|
187
|
-
何卒よろしくお願いします
|
1
test
CHANGED
File without changes
|
test
CHANGED
@@ -14,7 +14,9 @@
|
|
14
14
|
|
15
15
|
|
16
16
|
|
17
|
+
#```c++
|
18
|
+
|
17
|
-
|
19
|
+
include <cstdio>
|
18
20
|
|
19
21
|
#include <cstdlib>
|
20
22
|
|
@@ -178,6 +180,8 @@
|
|
178
180
|
|
179
181
|
|
180
182
|
|
183
|
+
```
|
184
|
+
|
181
185
|
となっていました。しかしこのinsert関数の部分ですが、一番最初のデータを挿入するときの挙動が理解できません。これだと、xがrootで初期化されていて、whileループに入り、yにxのrootが代入されて, yがNILでなくなってしまうのではないでしょうか。そうなるとif(y == NIL)が偽になってしまい、結局rootが定まらなくなってしまうと思ったのですが、どうなのでしょうか。
|
182
186
|
|
183
187
|
何卒よろしくお願いします
|