gpt4 book ai didi

c - 删除树节点时出现访问冲突错误

转载 作者:行者123 更新时间:2023-11-30 17:43:22 24 4
gpt4 key购买 nike

我正在使用标准过程删除树的所有节点,有序遍历后序并删除节点。当我使用先序遍历显示空树时,我收到访问冲突错误,我相信这是必须要做的带有空指针。

void deleteallnodes(struct node **head){
if(*head==NULL)
return ;
{
deleteallnodes(&((*head)->left));
deleteallnodes(&((*head)->right));
free(*head);
}
}
void main () {
insert(&root,5);
insert(&root,10);
insert(&root,2);
deleteallnodes(&root);
preorder(root);
}
void preorder(struct node *root)
{
if (root)
{
printf("\t %d",root->data);
preorder(root->left);
preorder(root->right);
}
}

最佳答案

删除节点时并没有清除它们。将代码更改为如下所示

free(*head);
*head = NULL; // add this line

否则,在preorder中,if (root)对于已删除的节点将会成功,并且您将漫游到您无法控制的内存中。

关于c - 删除树节点时出现访问冲突错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20250518/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com