gpt4 book ai didi

c - 使用新方法删除二叉树

转载 作者:行者123 更新时间:2023-12-04 09:10:07 25 4
gpt4 key购买 nike

实际上我在执行删除树时卡住了。我使用 free() 删除了叶节点,现在父节点将成为叶节点,并且也使用递归删除了这些节点。但问题是叶节点实际上并没有被删除,它仍然存在。还有我在删除树时遵循的方法如下

void deleteTree(struct node *root)
{
if(root->left == NULL && root->right == NULL)
{
free(root);
}
else
{
if(root->left != NULL)
deleteTree(root->left);
if(root->right != NULL)
deleteTree(root->right);
}
}

该方法只删除了叶子节点,并没有删除对应的父节点。在XCode中调试后发现叶子节点并没有被删除,它们还在。

So, why this happening ?

最佳答案

void deleteTree(struct node *root)
{
if (root) {
deleteTree(root->left);
deleteTree(root->right);
free(root);
}
}

关于c - 使用新方法删除二叉树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17131449/

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