Ich bin Codierung einen binären Suchbaumes und ich bin mit einer wenig Mühe, einen Weg zu finden, Knoten effektiv zu löschen.
Ich habe diesen Code:
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;
}
Und N eine Knotenstruktur, welche haben 5 Felder: Wert, lChild, rChild, Größe, Höhe. In der Tat, was ich hier mache ist, den Baum zu machen nicht zu dem Knoten zu verweisen, die ich löschen möchten, aber wenn ich versuche, so etwas wie zu setzen:
else if (N->rChild==NULL)
{
free(N);
N=NULL;
return N->lChild;
}
Oder jeder ähnlich aussehende Code, funktioniert es nicht. Kann mir jemand in die richtige Richtung zeigen, bitte? Vielen Dank.













