Sunt de codificare un arbore binar de căutare și am o mică problemă a găsi o modalitate de a șterge în mod eficient nod.
Am acest cod:
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 este o structură nod care au 5 domenii: valoare, lChild, rChild, dimensiune, înălțime. De fapt, ceea ce fac aici este de a face copacul sa nu indreptati spre nodul pe care vreau să-l ștergeți, dar când am încercat să pună ceva de genul:
else if (N->rChild==NULL)
{
free(N);
N=NULL;
return N->lChild;
}
Sau fiecare cod care arată similar, aceasta nu funcționează. Poate cineva să-mi punct în direcția cea bună te rog? Mulțumesc.













