我正在处理BST,我必须解除分配没有子节点的节点。所以我的计划有以下步骤:
NULL
。当达到指示free(father->left)
时,我的计划失败了。我无法弄清楚为什么程序崩溃,即使我确信father->left
包含我试图摆脱的节点的内存地址。发生了什么事?
Nodo *destroy_a_node(Nodo *root, Nodo *father, const int value)
{
if (root != NULL)
{
if ((root->value) > value)
{
root->left = destroy_a_node(root->left, root, value);
}
else if ((root->value) < value)
{
root->right = destroy_a_node(root->right, root, value);
}
else
{
printf("I am %d and my father is %d\n", root->value, father->value);
if (has_no_children(root))
{
if (father->left == root)
{
free(father->left);
father->left = NULL;
}
}
// More code to come...
}
}
return root;
}