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

質問編集履歴

2

考えた過程追記

2016/11/15 09:35

投稿

RinT_hinabita39
RinT_hinabita39

スコア28

title CHANGED
File without changes
body CHANGED
@@ -4,6 +4,8 @@
4
4
  ###発生している問題・エラーメッセージ
5
5
  含まれている数字を入力すると全部Not Found(つまりreturn 0になっている)、含まれない数字を入力するとSegmentation fault: 11と出てきます。原因が全く分かりません。どう直せば良いのでしょうか?
6
6
 
7
+ (追記)2分木の定義通り、最初の節を見て一致していればreturn 1、値が最初の節より大きければ右の枝に移動、小さければ左の枝に移動して再帰、これを最後に到達するまで続ける、という風にしたつもりでしたが、馬鹿なので30分考えても何がおかしいのか全くわかりませんでした。お願いします。
8
+
7
9
  ```
8
10
  1
9
11
  2

1

コピペ漏れ

2016/11/15 09:35

投稿

RinT_hinabita39
RinT_hinabita39

スコア28

title CHANGED
File without changes
body CHANGED
@@ -32,6 +32,8 @@
32
32
  上記は実行結果で、1〜18は木に含まれている数字、下4行は実際に1と19を探索した結果です。
33
33
 
34
34
  ###該当のソースコード
35
+
36
+ ごめんなさい、一部コピペ漏れがありました…
35
37
  ```
36
38
  #include <stdio.h>
37
39
  #include <stdlib.h>
@@ -100,7 +102,18 @@
100
102
  return p;
101
103
  }
102
104
 
105
+ if (x == p->data)
106
+ return p;
103
107
 
108
+ if (x < p->data)
109
+ p->left = insert_data(x, p->left);
110
+ else
111
+ p->right = insert_data(x, p->right);
112
+
113
+ return p;
114
+ }
115
+
116
+
104
117
  int search_tree(int x, struct node *p) { //自分で書いたのはここです
105
118
  if (x == p->data)
106
119
  return 1;