Я считаю, что моя функция вставки правильная, но похоже, что новый узел не вставлен в дерево. Я не мог понять, где ошибка. Я ценю любую помощь, спасибо.Невозможно вставить новый узел в двоичное дерево
Существует декларация узла и дерева:
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'. –