Binärer Suchbaum C ++

Binärer Suchbaum C ++

BST ist eine Datenstruktur, die die Daten in einer sortierten Liste verwaltet. Es ist als binärer Suchbaum bekannt, da im Baum jeder Knoten ein Maximum von zwei Kindern hat, das nicht weiter erhöht werden kann. Dies ist als Suchbaum bezeichnet. Wir werden dieses Phänomen in der C ++ - Sprache implementieren.

Implementierung

In einer Implementierung besteht der erste Schritt darin, eine Struktur zur Initialisierung des Taste vom Typ ganzzahliger Typ und sowohl linke als auch rechte Seitenknoten zu verwenden. Diese Knoten werden durch Verwendung eines variablen Zeigers definiert, da beide die Adressen der alternativen Knoten speichern. Danach schließen wir die Struktur.

Wir werden durch eine Struktur wieder einen neuen Knoten erstellen. Der Parameter der Funktion enthält die Daten, die wir in den Knoten eingeben möchten.

Struct Node *NewNode (intelement)

Es erstellt eine neue Knotentemperatur, die Daten darin speichert, und die Größe des Speichers wird über malloc () zugewiesen. Wir werden den Artikelwert im Schlüsselteil des Knotens hinzufügen. Während die linken und rechten Teile, die zuvor in der Struktur deklariert werden, als null deklariert werden, weil es der erste Knoten ist. Die Temperatur wird zurückgegeben.

Eine Funktion mit dem Namen „In Order“ wird erstellt und akzeptiert den Stammknoten im Parameter. Wie wir wissen, enthält der Baum drei Hauptteile: Knoten, links und rechte Seiten des Baumes. Wir werden einen If-Statement verwenden, um zu überprüfen, ob das Wurzel nicht null ist. Rufen Sie dann die Funktion auf und senden Sie den linken Teil des Stammes. Dadurch wird die Wurzel selbst mit einem Pfeil angezeigt, der die Richtung des Pfades im Baum bezeichnet. Als nächstes rufen Sie zum richtigen Durchqueren die entsprechende Funktion mit der rechten Wurzel als Parameter auf.

In Ordnung (Wurzel -> links)

So erfolgt die Überfahrung des Verfahrens. Um einen neuen Knoten in den Baum einzufügen, werden wir eine Funktion verwenden, die einen Knoten und den Schlüssel als Parameterwerte aufnimmt. Wenn der Baum bereits leer ist, wird der neue Knoten zurückgegeben. Wenn der Baum nicht leer ist, gehen Sie im zweiten Fall zuerst auf der rechten Seite und setzen Sie hier einen neuen Knoten ein. Zum Einsetzen werden wir eine IF-ELSE-Anweisung verwenden, um die Bestellung auf den Schlüssel zu überprüfen. Der neue Schlüssel wird zur linken Seite für die aufsteigende Reihenfolge gehen. Wenn der Teil, der den neuen Schlüssel überprüft, geringer ist als der im Knoten bereits vorhandene Wert.

Knoten -> links = Insert (Knoten -> links, Schlüssel)

Wenn der Schlüssel größer ist, geht er zum richtigen Teil.

Nach der Einführung des Knotens werden wir den nächsten Knoten oder den Knoten, der der Nachfolger ist, überprüfen. Es wird eine Funktion des min -Werts erstellt, die einen neuen Knoten mit einem Namen *aktuell erstellen. Dieser Knoten wird durch einen Wert zugewiesen, der als Argument an die Funktion übergeben wird. Es wird zuerst den Eckknoten oder das linke Blatt auf der linken Seite des Baumes finden. Wir verwenden eine Weile Schleife, die iteriert, bis das Durchqueren des Knotens fertig ist. Mit anderen Worten, der linke Teil des aktuellen Knotens ist nicht null.

Strom = Strom -> links

Zuwenden Sie den aktuellen Knoten im Wert des nächsten Stroms in der Schleife links weiter.

Unser Baum wird durchquert und organisiert, indem wir auf beiden Seiten Blätter hinzufügen. Jeder Wert wird über den Funktionsaufruf aus dem Hauptprogramm eingefügt. Jetzt müssen wir nach einem Element suchen und es löschen, sobald es gefunden wurde.

Der Baum in C ++ funktioniert auf demselben Phänomen wie die verknüpfte Liste. Wir werden die binäre Suche auf dem Baum anwenden und eine Löschvoroperie durchführen, um einen Knoten oder Blatt aus dem Baum zu löschen. Eine Funktion des Löschknotens wird erstellt; Es enthält den Baum und den Wert als Parameter. Wir werden zuerst überprüfen, ob die Bäume Werte in sich haben müssen. Daher wird die IF-Statement verwendet, und wenn die Wurzel null ist, bedeutet dies, nur die Wurzel zurückzugeben.

If (Schlüsselschlüssel)

Der Schlüssel, den Sie löschen möchten, ist kleiner als der Stammknoten. Gehen Sie dann zur linken Seite und rufen Sie die Löschfunktion mit dem linken Teil des Baumes und den zu löschen.

Root -> links = deleteNode (root -> links, Schlüssel);

Und das Gleiche gilt für den anderen Teil-wenn auch. Wenn der Schlüssel größer als der Knotentast. Geben Sie den richtigen Teil des Baumes und den Schlüssel, damit es leicht wird, den Knoten zu finden, den Sie löschen möchten.

Nun zu dem anderen Teil, der anwendbar ist, wenn der Knoten allein ist, kein Blatt weiter oder nur ein einzelnes Kind vor sich hat. Wenn eine Anweisung verwendet wird, überprüft dies erneut, ob auf der rechten Seite keine Anweisung verwendet wird.

Struct node * temp = root -> links;

Befreie die Wurzel in diesem Zustand. Dadurch wird der Wert aus der Wurzel entfernt.

Frei (Wurzel);

Wenn ein Knoten zwei Blätter enthält, verwenden wir den Wert, um den Wert zu suchen, und der richtige Teil wird an die Funktion gesendet.

Minvaluenode (root -> rechts);

Wenn der zu löschende Wert gefunden wird, werden wir ihn zum letzten Teil des Baumes erklären, damit er leicht gelöscht werden kann.

Root -> key = temp -> key;

Danach löschen Sie den Knoten,

Root -> right = delete node (node ​​-> rechts, temp -> taste);

Nach dem Schließen der Funktion werden wir hier das Hauptprogramm deklarieren. Der Stammknoten wird zunächst als Null festgelegt. Verwenden des Funktionsaufrufs insert () verwenden wir das Root und die Zahlendaten zum Knoten.

Einfügen (root, 5);

Die fehlerhafte Funktion ist für die Durchquerung des Baumes erforderlich.

In Ordnung (Wurzel);

Um den Knoten zu löschen, werden wir die Löschenfunktion aufrufen.

Root = DeleteNode (root, 10);

Nach der Löschung werden die Werte erneut angezeigt.

Nach dem Schreiben des Code werden wir ihn im Terminal von Ubuntu über den Compiler ausführen.

$ g ++ -o Dateidatei.C
$ ./Datei

Wie Sie sehen können, werden die sieben Elemente in den Knoten eingegeben. Einer wird gelöscht und der Rest wird in der gleichen Reihenfolge wie zuvor angezeigt.

Abschluss

Ein binärer Suchbaum wird verwendet, um die Werte in der sortierten Form zu speichern. Um eine beliebige Nummer zu durchsuchen, müssen alle Zahlen zuerst in der Reihenfolge sortiert werden. Danach wird die angegebene Nummer durchsucht, indem der Baum in zwei Teile geteilt wird, wodurch Unterbäume hergestellt werden. Die BST -Implementierung erfolgt im Ubuntu -System, indem ein Beispiel auf ausgearbeitete Weise erklärt wird. Wir hoffen, Sie haben diesen Artikel hilfreich gefunden. Weitere Tipps und Tutorials finden Sie in den anderen Linux -Hinweisartikeln.