ich durch eine Reihe von Artikeln an verschiedenen Standorten sind sehr verwirrt zu konstruieren, in Bezug auf ein Binary Search Tree
von einem Traversal Konstruktion (pre
, post
oder in-order
) oder einer Kombination von beliebigen zwei von ihnen . Zum Beispiel, bei this Seite, heißt es, dass gegeben pre
, post
oder level
Reihenfolge Traversal, zusammen mit der in-order
Traversal, kann man die BST
konstruieren. Aber here und there, zeigen sie uns, um einen BST
von pre-order
allein zu konstruieren. Auch, here sie zeigen uns, wie man die BST
von pre
und post-order
Traversalen zu konstruieren. An einer anderen Stelle fand ich eine Lösung, um aus der post-order
Traversierung nur eine BST
zu konstruieren.Wie viele Überquerungen müssen bekannt sein, um ein BST
Jetzt weiß ich, dass angesichts der inorder
und pre-order
Traversalen ist es möglich, eine BST
eindeutig zu bilden. Was den ersten Link, den ich zur Verfügung gestellt, obwohl sie sagen, dass wir nicht die BST
von pre-order
und post-order
konstruieren können, kann ich nicht sortieren gerade die post-order
Array bekommen seine inorder
Traversal, und dann verwenden, und die pre-order
Array der Bildung BST
? Wird das gleiche wie die Lösung in der vierten Verbindung oder anders sein? Und gegeben nur pre-order
, kann ich das sortieren, um die in-order
zu bekommen, dann benutze das und die pre-order
, um die BST
zu bekommen. Muss sich das wieder von der Lösung bei den Links 2 und 3 unterscheiden?
Spezifisch, was ist ausreichend, um die BST
eindeutig zu generieren? Wenn keine Eindeutigkeit erforderlich ist, kann ich sie einfach sortieren, um die in-order
Traversierung zu erhalten und eine der N möglichen BST
s davon rekursiv aufzubauen.
Also die Lösungen bei 2. und 3. Links generieren die einzige mögliche 'BST'? – SexyBeast
@Cupidvogel: Ich habe den Code dort nicht befolgt - aber wenn es richtig ist, dann ja. Es gibt nur eine BST für jede Vorbestellungsdurchquerung. – amit
Dann siehe den Artikel unter http://www.geeksforgeeks.org/archives/6633. Sie konstruieren eine 'BST' von' Pre'- und 'In-Order'-Traversalen. Aber wenn man bedenkt, dass der Baum allein aus der "Vorbestellung" konstruiert werden kann, glauben Sie nicht, dass die binäre Suche, die in diesem Code benötigt wird, um die Position zu finden, sie weniger effizient macht? Wird es nicht effizienter sein, den "inorder" überhaupt nicht zu verwenden und einfach die 'pre-order' zu verwenden, um den Baum zu konstruieren? Werden die beiden Lösungen jedoch notwendigerweise denselben Baum liefern? – SexyBeast