Ich bin in dem Prozess für eine BST nicht rekursive rekursive Funktion der Umwandlung für ein Interview zur Vorbereitung. Bisher habe ich herausgefunden vorbestellen, inorder, Postorder, Suchen, Löschen, Einfügen und die BST auf eine kreisförmige verkettete Liste zu konvertieren. Ich habe Probleme, herauszufinden, wie Stapel oder Warteschlangen zu verwenden, um die Höhe zu erhalten und zu finden, wenn es sich um ein BST ist. Irgendwelche Tipps wäre sehr dankbar. Ich bin nicht auf der Suche nach Code, aber die Logik hinter dem Code.
Pseudo-Code für nicht-rekursive Implementierung von Baumhöhe und isBST
Für den Anfang, die Vorbereitung großer Job für Interviews wie dieses! Ich hoffe, dass Sie Spaß haben das Spiel mit diesen Algorithmen.
Beginnen wir mit der Aufgabe zu versuchen, um zu bestimmen, beginnen, wenn der binäre Baum ein BST ist. Eine Möglichkeit, dies zu tun, ist ein inorder zu Fuß des Baumes zu tun und prüfen, ob die Elemente in sortierter Reihenfolge sind. Dies wird wahr, wenn und nur wenn der Baum ein BST ist. Da Sie bereits Code haben einen Inorder Spaziergang von den Elementen des Baumes zu tun, sollten Sie in der Lage sein, leicht Ihren Code anpassen zu überprüfen, ob die Elemente, die Sie sahen durch die Verfolgung des letzten Elements sortiert werden aus dem inorder zu Fuß kommen in die inorder Fuß, zu vergleichen dann jeweils an dem vorhergehenden Element erzeugte Element. Wenn die beiden nicht in Ordnung sind, ist der Baum nicht ein BST.
Um die Höhe des Baumes zu bestimmen, wäre eine Option sein, eine der Suche zu nehmen, die Sie mit so weit habe kommen (Preorder, Postorder, inorder) und halten Sie den Überblick über die Höhe des Stapels an jedem Punkt. Die Idee dabei ist, dass seit dem Stapel immer den Überblick über den Weg zurück von jedem Knoten bis zur Wurzel halten, können Sie einfach den Baum gehen und die tiefste Datensatz, den Sie jemals der Stapel werden sehen. Diese maximale Tiefe ist dann die Höhe des Baumes.
Hoffe das hilft! Und viel Glück mit Interviews!
Um die Höhe des Baumes zu finden, könnten Sie die Morris-Traversal [O (n) Zeit] verwenden].
Um zu überprüfen, ob es eine gültige BST ist, tut einen Inorder Spaziergang des Baumes. Bewegen, um die Elemente in einem Array. Überprüfen Sie, ob das Array sortiert ist oder nicht ein BST zu validieren.













