实际上我在实现删除树时被卡住了。我使用 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 中调试后,我发现叶子节点没有被删除,它们仍然存在。
那么,为什么会发生这种情况?