私は、インサート関数を実装しようとしているバイナリ検索ツリーを持っています。しかし、私はコードをテストするとき、私のロジックが私にはうまくいくように見えますが、要素が全く追加されていないことがわかります。私はいくつかのCの体格が失われているように感じる。バイナリ検索ツリーが追加されない要素
struct tree_element {
int data;
struct tree_element* left;
struct tree_element* right;
};
typedef struct tree_element node;
void init(node* root){
root->left = NULL;
root->right = NULL;
root->data = 0;
}
void insert(node* root, int val){
if (root == NULL){
root = (node*)(malloc(sizeof(node)));
init(root);
root->data = val;
printf("added %i\n", val);
return;
}
if (val > root->data){
insert(root->right, val);
}
else {
insert(root->left, val);
}
}
ダブルポインタ(ポインタへのポインタ)を使用する必要がありますが、実際には 'insert 'の結果としてノードを返す方が簡単です。 –
ダブルポインタが必要なのはなぜですか?そして、現在のコードでは、ノードが追加されないようになっていますか? –
[この問題の*多数*重複](https://stackoverflow.com/questions/6349196/binary-search-tree-pointer-problem)。 – WhozCraig