0

所以我有一个完整的程序,可以将值添加到二叉树中。然后它可以按前序、后序和按顺序列出值。现在一切都很好,除了当我运行我的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 之类的值,你知道当它不存在时给出的值。所以我认为这没关系,但也许这就是问题所在。

4

1 回答 1

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。

于 2012-11-28T16:58:31.757 回答