Ich weiß, dass BST
keine Duplikate zulässt. Zum Beispiel, wenn ich ein Wort "RABSAB" habe.
Der binäre Suchbaum für die obige Zeichenfolge lautet:
%Vor%Was, wenn wir die Duplikate in den Baum aufnehmen wollten? Wie wird sich der Baum verändern? Diese Frage wurde mir in einem Interview gestellt.
Sie haben mich gebeten zu zeichnen:
Jede Hilfe ist willkommen!
PS: Helfen Sie mir, indem Sie die zugehörigen Bäume zeichnen
Regel zum Einfügen in eine binäre Suchstruktur ohne Duplikat ist:
Um doppelte Einträge zuzulassen, müssen Sie die Regel wie folgt ändern:
oder
oder
So kann Ihr BST
für das Wort "RABSAB" mit Duplikaten wie folgt aussehen:
Oder
%Vor%oder
%Vor%In den ersten zwei Fällen wird sowohl die Insertion als auch die Suche etwas komplex! Sie werden es hier mit vielen Erklärungen finden !
Und der dritte Fall ist etwas einfacher zu pflegen.
Alle werden erfolgreich verwendet, um Duplikate zu erlauben, jetzt ist die Wahl deine!
Eine Option besteht darin, den Baum so zu ändern, dass ein Zweig die Duplikate enthält, zum Beispiel haben die linken Zweige Knoten, die kleiner oder gleich dem Vater sind, oder die rechten Zweige Knoten haben, die größer oder gleich sind zum Elternteil
Eine andere Option ist, alle Duplikate in einem Knoten zu speichern, also anstelle von
%Vor%Sie hätten stattdessen
%Vor%oder
%Vor%Bei einer normalen BST-Einfügung und -Suche treten beide basierend auf einer Regel kleiner als (& gt;) und grßer als (& lt;) auf.
Sie können stattdessen die Einfügung bei weniger als gleich (& gt; =) oder größer als gleich (& lt; =) versuchen und versuchen, die gleiche Regel für die Suche zu verwenden.
Alternativ können Sie in jedem Knoten ein Array einfügen, um doppelte Elemente aufzunehmen.
Für Ihre Eingabe RABPAB
können Sie eine BST
erstellen, indem Sie eine LIST verwenden, um alle gleichwertigen Schlüssel zu speichern. Alle gleichwertigen Schlüssel werden auf derselben Ebene unter Verwendung einer Datenstruktur platziert, die sie speichern kann.
Die BST wird in etwa so aussehen,
%Vor%Der Java-Code für Ihre BST-Speicherung von Integer-Werten könnte so aussehen,
%Vor% Hier ist maxvalue
die maximal möglichen gleichwertigen Schlüssel.
Tags und Links java binary-tree binary-search-tree