Mam kodowanie przeszukiwanie binarne drzewo i mam mały problem ze znalezieniem sposobu na skuteczne usunięcie węzła.
Mam ten kod:
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;
}
I N jest budowa węzła, który posiada 5 pól: Wartość, lChild, rChild, wielkość, wysokość. W rzeczywistości to, co robię tutaj jest, aby drzewo nie wskazują kierunku węzła, który chcę usunąć ale gdy próbuję umieścić coś takiego:
else if (N->rChild==NULL)
{
free(N);
N=NULL;
return N->lChild;
}
Lub każdy podobny kod szuka, to nie działa. Czy ktoś może wskazać mi w dobrym kierunku, proszę? Dziękuję Ci.













