Tôi đã thực hiện một chức năng để chèn vào BST bằng cách sử dụng vòng lặp và nó hoạt động hoàn toàn tốt. Bây giờ, khi iam viết để làm điều đó bằng cách sử dụng đệ quy tôi không biết tại sao nó không hoạt động đúng, tuy nhiên logic là chính xác theo tôi. Có vẻ như không có newnode đang được thêm vào cây BST và đứng đầu của cây sau khi ra khỏi chức năng chèn một lần nữa trở thành NULL.Chèn đệ quy BST
#include <iostream>
using namespace std;
class node{
public:
int data;
node *right;
node *left;
node(){
data=0;
right=NULL;
left=NULL;
}
};
class tree{
node *head;
int maxheight;
void delete_tree(node *root);
public:
tree(){head=0;maxheight=-1;}
void pre_display(node* root);
node* get_head(){return head;}
void insert(int key,node* current);
};
void tree::insert(int key,node *current){
if(current==NULL)
{
node *newnode=new node;
newnode->data=key;
current=newnode;
}
else{
if(key<current->data)
insert(key,current->left);
else
insert(key,current->right);
}
return;
}
void tree::pre_display(node *root){
if(root!=NULL)
{
cout<<root->data<<" ";
pre_display(root->left);
pre_display(root->right);
}
}
int main(){
tree BST;
int arr[9]={17,9,23,5,11,21,27,20,22},i=0;
for(i=0;i<9;i++)
BST.insert(arr[i],BST.get_head());
BST.pre_display(BST.get_head());
cout<<endl;
system("pause");
return 0;
}
Hãy cho tôi biết tôi nên thay đổi gì trong thuật toán để làm cho nó hoạt động.
Nhưng iam gửi con trỏ đầu từ chính, và do đó hiện tại sẽ được giống như người đứng đầu trong trường hợp đầu tiên của đệ quy. – Zohaib
Bạn đang chuyển một nút * theo giá trị. Nếu bạn vượt qua nó bằng cách tham chiếu BST :: đầu sẽ được cập nhật một cách chính xác –
Nhưng tôi muốn giữ BST riêng tư. – Zohaib