Löschen von Knoten in BST mit freien (N)

stimmen
0

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.

Veröffentlicht am 30/03/2011 um 17:20
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
0

Zu allererst Sie sagen, N = NULL und dann N- Aufruf> lchild N ist null und zeigt auf nichts so wie wollen Sie erwarten, dass der lchild Wert erhalten?

Da diese Hausaufgaben sind, werde ich keine direkte Antwort, aber Hinweise geben.

So löschen Sie den Knoten, überprüfen, ob es Kinder, wenn sie es frei tut, und entfernen Sie Verweise darauf, wie die Eltern-Kind-ptr. Wenn es hat 1 Kind Swap die ptr, die an den Knotenpunkten Sie mit dem Kind löschen möchten, und den Knoten freizugeben. Gleiches gilt, wenn Sie auch zwei Kinder haben.

Beantwortet am 30/03/2011 um 17:24
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more