删除生成随机分段错误的二叉树中的所有内容

时间:2012-11-28 16:52:36

标签: c recursion binary-tree

所以我有一个已完成的程序,它将值添加到二叉树中。然后,它可以按预订,后订单和按顺序列出值。现在一切都工作得非常花哨,除非我运行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,你知道当它不存在时给出的值。所以我认为没问题,但也许这就是问题。

1 个答案:

答案 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。