我想讓pop函數刪除節點的節點和子樹。這是我的代碼如何刪除BST C語言中的子樹?
void pop(struct data *node,int num)
{
if(node)
{
if(node->num==num)
{
pop(node->left,num);
pop(node->right,num);
free(node);
node=NULL;
}
else
{
if(num> node->num)
pop(node->right,num);
else if (num< node->num)
pop(node->left,num);
}
}
}
void pre(struct data *node)
{
if(node)
{
printf("%d ",node->num);
pre(node->left);
pre(node->right);
}
}
void main()
{
push(&root,37);
push(&root,20);
push(&root,45);
push(&root,5);
push(&root,15);
push(&root,40);
push(&root,50);
pre(root);
pop(root,5);
pre(root);
getchar();
}
在我使用pop之前,Pre函數工作得很好。但是在我使用彈出功能之後,它會中斷。誰能知道錯誤在哪裏?
好吧,我會嘗試:D – greenthunder
@greenthunder:按照你的要求編輯它。 –
謝謝老兄,它工作。我想我應該通過你的建議修復我的代碼:) – greenthunder