質問編集履歴

6

リンクの追加

2020/09/08 08:45

投稿

rdld036
rdld036

スコア16

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

誤字

2020/09/08 08:45

投稿

rdld036
rdld036

スコア16

test CHANGED
@@ -1 +1 @@
1
- 二分探索木に最初の値を挿入するときのプログラムの挙動について
1
+ 二分探索木に最初の値を挿入するときのプログラムの挙動について
test CHANGED
File without changes

4

タイトルの訂正

2020/09/08 08:03

投稿

rdld036
rdld036

スコア16

test CHANGED
@@ -1 +1 @@
1
- c++を用いた二分探索木の挿入について
1
+ 二分探索木に最初値をを挿入するときのプログラムの挙動について
test CHANGED
File without changes

3

書式の改善

2020/09/08 08:02

投稿

rdld036
rdld036

スコア16

test CHANGED
File without changes
test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
 
12
12
 
13
- という問題なのですが、これをC++で実装するにあたって模範解答を見ると以下のようになってました。しかしこのinsert関数の部分ですが、一番初めにデータを挿入するときrootにどのようにデータが追加されるか理解できません。これだと、xがrootで初期化されていて、whileループに入り、yにxのrootが代入されて, yがNILでなくなってしまうのではないでしょうか。そうなるとif(y == NIL)が偽になってしまい、結局rootが定まらなくなってしまうと思います。もしwhileループを経ないのであれば、どのタイミングでxにNILが代入されるのでしょうか。この点について解説していただけますか。
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

書式の改善

2020/09/08 07:59

投稿

rdld036
rdld036

スコア16

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
- print: キーを木の中間順巡回(inorder tree walk)と先行順巡回(preorder tree walk)アルゴリズムで出力する。
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
- という問題なのですが、これをC++で実装するにあたって模範解答を見ると
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

2020/09/08 07:58

投稿

rdld036
rdld036

スコア16

test CHANGED
File without changes
test CHANGED
@@ -14,7 +14,9 @@
14
14
 
15
15
 
16
16
 
17
+ #```c++
18
+
17
- #include <cstdio>
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
  何卒よろしくお願いします