Estoy codificación de un árbol binario de búsqueda y estoy teniendo un poco de problemas para encontrar una manera de eliminar el nodo de manera efectiva.
Tengo este código:
struct node* deleteNode(int i, struct node *N)
{
if (N==NULL)
{
return NULL;
}
else if (i<N->value)
{
N->size--;
N->lChild=deleteNode(i,N->lChild);
}
else if (i>N->value)
{
N->size--;
N->rChild=deleteNode(i,N->rChild);
}
else if (N->lChild==NULL)
{
return N->rChild;
}
else if (N->rChild==NULL)
{
return N->lChild;
}
else
{
N->size--;
N->value=findMin(N->rChild);
N->rChild=deleteNode(N->value,N->rChild);
}
return N;
}
Y N es una estructura de nodos que tienen 5 campos: valor, lchild, rChild, tamaño, altura. De hecho lo que estoy haciendo aquí es hacer que el árbol no apuntar hacia el nodo que quiero borrar pero cuando estoy tratando de poner algo como:
else if (N->rChild==NULL)
{
free(N);
N=NULL;
return N->lChild;
}
O cada código de aspecto similar, no funciona. Alguien me puede apuntar en la dirección correcta, por favor? Gracias.













