Sto codifica di un albero binario di ricerca e sto avendo un po 'di problemi a trovare un modo per eliminare in modo efficace nodo.
Ho questo codice:
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;
}
E N è una struttura nodo che ha 5 campi: valore, lchild, rChild, dimensioni, altezza. In realtà quello che sto facendo qui è quello di rendere l'albero non per puntare verso il nodo che voglio eliminare, ma quando sto cercando di mettere qualcosa di simile:
else if (N->rChild==NULL)
{
free(N);
N=NULL;
return N->lChild;
}
Oppure ogni codice cercando simile, non funziona. Qualcuno mi può punto nella giusta direzione per favore? Grazie.













