class node{
public:
int data;
node *left;
node *right;
};
class BFStree{
public:
void insert(int key);
void deleteNode(int key);
void inorderTraversal(node *temp);
void inorder();
node *root;
BFStree(){
root = NULL;
}
};
void BFStree::insert(int key){
node *temp = root;
while(temp!=NULL){
if(key>temp->data){
temp = temp->right;
}
else if(key<temp->data){
temp = temp->left;
}
else{
cout << "NOT ALLOWED TO HAVE SAME DATA" << temp->data << " " << key << endl;
}
}
node *temp2 = new node;
temp2->data = key;
cout << key << " inserted" << endl;
temp2->left = NULL;
temp2->right = NULL;
temp = temp2;
}
int main(){
BFStree t;
t.insert(7);
t.insert(3);
t.insert(21);
}
Я пытаюсь использовать вышеупомянутую функцию для вставки данных в дерево bst, но ничего не происходит, даже корень НЕДЕЙСТВИТЕЛЕН, но когда я использую следующую функцию, работа выполнена.Я не понимаю, что я сделал по-разному в двух кодах.Я новичок в программировании, поэтому у меня такие плохие сомнения.Пожалуйста, помогите мне очистить его.
void BFStree::insert(int key){
node *temp = root;
if(temp==NULL){
temp = new node;
temp->data = key;
temp->left = NULL;
temp->right = NULL;
root = temp;
return;
}
while(1){
if(key>temp->data){
if(temp->right==NULL){
node *temp2 = new node;
temp2->data = key;
temp2->left = NULL;
temp2->right = NULL;
temp->right = temp2;
break;
}
else{
temp = temp->right;
}
}
else if(key<temp->data){
if(temp->left==NULL){
node *temp2 = new node;
temp2->data = key;
temp2->left = NULL;
temp2->right = NULL;
temp->left = temp2;
break;
}
else{
temp = temp->left;
}
}
}
}