私の挿入機能は正しいと思いますが、新しいノードがツリーに挿入されていないようです。私は間違いがどこにあるのか分からなかった。私は助けていただきありがとうございます。新しいノードをバイナリツリーに挿入できません
ノードやツリーの宣言があります:
class Node{
int key;
Node *right, *left;
}
class Tree{
public:
int init();
Node *root;
Node *insert(int key, Node *p);
};
機能があります:
int Tree::init(){
this->root = NULL; return 1;
}
Node *Tree::insert(int key, Node *p){
if(p == NULL){
Node *novo = new Node();
novo->key = key;
novo->left = NULL;
novo->right = NULL;
p = novo;
}
else if(key < p->key){ p->left = insert(key, p->left); }
else if(key > p->key){ p->right = insert(key, p->right); }
else{ cout << "Error: key already exist" << endl; }
return p;
}
私がメインで関数を呼び出すと、それは新しいをリンクしないように、それは見えますが、ノード
int main() {
Tree dictionary;
cout << "enter the key"; cin >> key;
dictionary.insert(key, dictionary.root);
cout << dictionary.root->key;
}
トピックオフ:なぜ 'int Tree :: init()'の代わりにコンストラクタ? – user4581301
あなたの 'MCVE'はコンパイルされません - 私は' gcc'でそれを試しました。 –