Ein binärer Suchbaum ist eine Datenstruktur, in dem Aufzeichnungen von Daten , die so genannte " Knoten ", haben Zeiger auf andere Knoten , genannt " Kinder." Dies gibt die Knoten , wenn grafisch aus , eine Form ähnlich einem Stammbaum . Nodes erhalten ihren Platz in dem Baum auf , ob sie sich als größer oder kleiner als andere Knoten auswerten basiert. Left Kinder sind immer weniger als ihre Eltern , rechts Kinder immer more.Binary Suche Bäume sind in der Informatik wichtig , denn sie können sowohl sortiert und suchten im Durchschnitt in O ( n log n) Zeit . Things You
Compiler
Bestehende binären Suchbaum
brauchen anzeigen Weitere Anweisungen
1
erstellen Speicher -Funktion, die den Root-Knoten erhält . Wann immer Sie mit Bäumen in der Informatik betreffen, werden die effektivste Algorithmus fast immer rekursiv sein und Speichern der Baum in eine Datei wird keine Ausnahme sein . Hier ist ein Beispiel Skelett des rekursiven Funktion Speicher ( in Java). Public void store (Node n ) throws IOException { ...}
2
schreiben Daten auf Root-Knoten in einer Datei. Dies wird mit " Pre-Order -Traversal " (Root , Left Kind , Right Kind) , um durch alle Knoten im Baum gehen, weil diese Methode der Traversal wird es am einfachsten, den Baum von der Reihenfolge der Knoten in der Datei rekonstruieren . Die rekursive Funktion sieht nun so aus : public void store (Node n ) throws IOException {write ( savefile , n) ;} Shop sollte sich mit der Linken Kind rufen : public void store (Node n ) throws IOException {write ( savefile , n ); ; möglich ( n.left ) } Shop sollte sich mit der rechten Kind rufen : public void store (Node n ) throws IOException {write ( savefile , n) ; möglich ( n.left ); möglich ( n.right ); }
3
prüfen , dass die Funktion der rekursiven Checkliste passiert. Um Stack-Überlauf Fehler zu vermeiden , überprüfen Sie immer , dass eine rekursive Funktion die folgenden Bedingungen erfüllt: Ist die Funktion eine Exit- Staat? Ja , solange der Baum nicht von unendlicher Tiefe , schließlich wird es einen Knoten zu erreichen , die weder eine linke oder rechte Kind hat und die bei jeder Iteration der Funktion exit.Does näher an der Ausfahrt Staat? Ja , vorausgesetzt , dass der Baum nicht kreisförmig ist und kein Knoten ist mit einem seiner eigenen Vorfahren als child.The Funktion übergibt die Checkliste .
4
aus der Datei zu rekonstruieren. Wenn es an der Zeit , den Baum wieder aus der Datei laden kommt, fügen Sie einfach die einzelnen Knoten in den Baum , wie es aus der Datei mit Ihrem Standard- Insertion Algorithmus geladen wird. Dies sollte an der Wurzel beginnen und seinen Weg nach unten mit Pre-Order -Traversal , indem Sie den neuen Knoten in der ersten leeren Raum, in dem sie passen. Dies sollte den Baum genau zu rekonstruieren , wie es ursprünglich in O ( n log n) im Durchschnitt zusammen.