我試圖用遞歸插入一個新的節點到BST中。
但插入後我失去了鏈接。
有序遍歷表明程序只能訪問根節點。
這是我的計劃在二叉搜索樹(C++)中插入的遞歸函數
類BST
class bst
{
struct node
{
struct node *lchild;
int info;
struct node *rchild;
}*start;
public:
bst();
void insert(int num,struct node *start);
void search(int num,struct node *start);
void display();
void inorder(node *start);
struct node *getRoot(){
return start;
}
};
插入功能
void bst :: insert(int num,struct node *ptr)
{
if(ptr == NULL)
{
ptr = new node;
ptr->info = num;
ptr->lchild = NULL;
ptr->rchild = NULL;
if(start == NULL)
start = ptr;
return;
}
else if(num < ptr->info)
{
insert(num,ptr->lchild);
}
else if(num > ptr->info)
{
insert(num,ptr->rchild);
}
else
{
cout << "Duplicate element \n";
return;
}
}
主要功能
int main()
{
bst S;
int option,key;
cout << "Enter an element\n";
cin >> key;
S.insert(key,S.getRoot());
}
如何維護正確的鏈接而不更改插入函數的返回類型?
您的節點結構真的可以使用一個構造函數。 – Borgleader 2014-10-06 15:17:30
@Borgleader對不起,我不明白。 – Pradeep 2014-10-06 15:18:27
@Rustam'getRoot()'函數在類中定義。 – Pradeep 2014-10-06 15:34:01