Я хочу сделать функцию 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. Но после того, как я использовал функцию pop, это перерыв. Может ли кто-нибудь знать, где ошибка?
Хорошо, тогда я попробую: D – greenthunder
@greenthunder: Редактировал это, как вы просили. –
Спасибо, чувак, это сработало. Я думаю, что я должен починить свой код по вашему совету :) – greenthunder