所以我有一个已完成的程序,它将值添加到二叉树中。然后,它可以按预订,后订单和按顺序列出值。现在一切都工作得非常花哨,除非我运行deleteAll
函数时它会使程序不稳定,并且在添加值时随机出现,或者列出树可能会产生分段错误。我不确定是什么错,我还是 C 的新手,并且无法理解导致它的原因。它显然在deleteAll
函数中,所以这里是......
void deleteAll(node* *hd){
node* curr = *hd;
if(curr->left != NULL){
deleteAll(&curr->left);
}
if(curr->right != NULL){
deleteAll(&curr->right);
}
free(curr);
}
在我删除所有并以任何顺序列出后,它会给我一些值,例如321294124,你知道当它不存在时给出的值。所以我认为没问题,但也许这就是问题。
答案 0 :(得分:2)
void deleteAll(node* *hd){
if(*hd != NULL){
node* curr = *hd;
if(curr->left != NULL){
deleteAll(&curr->left);
}
if(curr->right != NULL){
deleteAll(&curr->right);
}
free(curr);
*hd = NULL;
}
}
想出来,谢谢arrowdodger。