Obwohl Java nicht bietet einen binären Baum Klasse in den Standard- Bibliotheken , ist eine grundlegende Binärbaum Klasse einfach genug präsentiert werden . A " Durchlauf " einer Datenstruktur ist ein Algorithmus, der jeden Knoten besucht einmal . Dies wird oft als eine Art Iterator ( ähnlich wie ein Iterator Liste ) oder Methode, die eine Callback-Methode für jeden Knoten rufen umgesetzt . In Java, um eine " Postorder " Traversal , die unter der Wurzelknoten letzten Willen zu tun, sind keine Rückrufe oder Iteratoren nötig. Die Traversal -Funktion wird einfach ausdrucken jeden Knoten besucht es auf der Konsole . Anleitung
1
schreiben grundlegenden binären Suchbaum Klasse. Es gibt nur zwei Methoden, die in dieser Phase unterstützt werden müssen : eine grundlegende Konstrukteur , dass der Knoten den Wert , und einen Einsatz Methode initialisiert . Die Insert-Methode wird durchlaufen einen Baum und erstellen Sie einen neuen Knoten an der richtigen Stelle . " " public class BinaryTree { BinaryTree links, rechts BinaryTree ; int value ; öffentlichen BinaryTree (int v) {value = v ;} //Legen Sie einen Wert in den Baum public void insert ( int v ) {if ( v if ( links = = null) links = new BinaryTree (v) , sonst left.insert ( v); } else if ( v > value ) {if (rechts == null) rechts = new BinaryTree (v) , sonst right.insert (v) ; . } } ""
2
erstellen Sie eine Instanz des binären Baum, der Root-Knoten sein wird Jeder Knoten , auch der Root-Knoten , muss einen Wert
3
Wählen Sie einen Wert für den root-Knoten , die irgendwo in der Mitte ist der Objekte Sie speichern kannst. zum Beispiel, wenn Sie die Speicherung eine gleichmäßige Verteilung der Nummern sind von 1 bis 100 , 50 eine gute Wahl für ist der Root-Knoten Binary Bäume sollten so ausgewogen wie möglich, da unsymmetrische Bäume extrem hoch wachsen und sind nicht sehr effektiv " " BinaryTree b = new BinaryTree (50 ), " . . "
4
Insert einige Knoten in den Baum . Da dieser Baum ist nicht Auto- Balancing, das Gleichgewicht zu halten , sollten Knoten in einer bestimmten Reihenfolge eingefügt werden. die Reihenfolge, in diesem Beispiel -Code in Handarbeit gemacht wird , um die kürzeste und effizienteste Baum möglich . " " b . Einsatz (20 ); b.Setzen (40); b.Setzen (10); b.Setzen (5); b.Setzen (45); b.Setzen (70); b.Setzen (60); b.Setzen (80); b.Setzen (55); b.Setzen ( 85); " "
5
Traverse den Baum , durchqueren den linken Baum ersten , durch die richtigen Baum gefolgt , und dann schließlich die Wurzelknoten . Wenn Rekursion wird die postorder Traversierung zu tun, ist das Verfahren nur drei Zeilen. In diesem Fall wird der Stapel nur bis zur Höhe des Baumes wachsen . Da der Baum ausgeglichen und kleine , Rekursion nicht überläuft der Stapel .
6
Fügen Sie neue Methode zur BinaryTree Klasse namens Postorder . Dabei ist es druckt nur den Wert jedes Knotens besucht es . " " public void Postorder () {if (links ! = null ) left.postorder (); if ( rechts = null) right.postorder (); ! System.out.println ( value); } ""
7
drucken die Knoten in Postorder durch Aufruf der b.postorder Verfahren nach Ihrer Einsätze " " b.postorder (); " .