Your question, your audience. Choose who sees your identityâ€”and your questionâ€”with question security.
void delete_tree (binarytree *t, int x)
{
binarytree temp;
if (!is_empty(*t))
{
if (x == (*t)-> data)
{
if (((*t) -> left == NULL)&&((*t) -> right == NULL))
{
temp = (*t);
(*t) = NULL;
free (temp);
}
if (((*t) -> left != NULL)&&((*t)-> right == NULL))
{
temp = (*t);
(*t) = (*t) -> left;
free (temp);
}
if (((*t)-> left == NULL)&&((*t)-> right != NULL))
{
temp = (*t);
(*t) = (*t) -> right;
free (temp);
}
if (((*t) -> left != NULL)&&((*t) -> right != NULL))
{
temp = (*t)-> right;
while (temp -> left != NULL)
{
temp = (*t) -> left;
}
temp -> left = (*t) ->left;
temp = (*t);
(*t) = (*t) -> right;
free (temp);
}
}
else {
if ( x <= (*t) -> data)
delete_tree(&(*t) -> left, x);
else
delete_tree(&(*t) -> right, x);
}
}
else printf("No data found.\n");
}
void delete_tree (binarytree *t, int x)
{
binarytree temp;
if (!is_empty(*t))
{
if (x == (*t)-> data)
{
if (((*t) -> left == NULL)&&((*t) -> right == NULL))
{
temp = (*t);
(*t) = NULL;
free (temp);
// ADD A RETURN
return;
}
if (((*t) -> left != NULL)&&((*t)-> right == NULL))
{
temp = (*t);
(*t) = (*t) -> left;
free (temp);
// ADD A RETURN
return;
}
if (((*t)-> left == NULL)&&((*t)-> right != NULL))
{
temp = (*t);
(*t) = (*t) -> right;
free (temp);
// ADD A RETURN
return;
}
if (((*t) -> left != NULL)&&((*t) -> right != NULL))
{
temp = (*t)-> right;
while (temp -> left != NULL)
{
temp = (*t) -> left;
}
temp -> left = (*t) ->left;
temp = (*t);
(*t) = (*t) -> right;
free (temp);
}
}
else {
if ( x <= (*t) -> data)
delete_tree(&(*t) -> left, x);
else
delete_tree(&(*t) -> right, x);
}
}
else printf("No data found.\n");
}
Orvoid delete_tree (binarytree *t, int x)
{
binarytree temp;
if (!is_empty(*t))
{
if (x == (*t)-> data)
{
if (((*t) -> left == NULL)&&((*t) -> right == NULL))
{
temp = (*t);
(*t) = NULL;
free (temp);
}
// ADD AN ELSE
else if (((*t) -> left != NULL)&&((*t)-> right == NULL))
{
temp = (*t);
(*t) = (*t) -> left;
free (temp);
}
// ADD AN ELSE
else if (((*t)-> left == NULL)&&((*t)-> right != NULL))
{
temp = (*t);
(*t) = (*t) -> right;
free (temp);
}
// ADD AN ELSE
else if (((*t) -> left != NULL)&&((*t) -> right != NULL))
{
temp = (*t)-> right;
while (temp -> left != NULL)
{
temp = (*t) -> left;
}
temp -> left = (*t) ->left;
temp = (*t);
(*t) = (*t) -> right;
free (temp);
}
}
else {
if ( x <= (*t) -> data)
delete_tree(&(*t) -> left, x);
else
delete_tree(&(*t) -> right, x);
}
}
else printf("No data found.\n");
}
Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.
Have a better answer? Share it in a comment.
There needs to be a return in your different cases - or an else before each