Kann ich einen binären Baum aus einem bestimmten dfs Traversal bilden? Ich meine, sagen, dass ich inorder, preorder, postorder, oder alle drei habe, kann ich einen einzigartigen binären Baum aus diesen Traverse whit keine Mehrdeutigkeit mit einem anderen Baum haben?Konvertieren von DFS in binären Baum
Antwort
Sie könnten jeden Binärbaum wiederherstellen, wenn Sie alle Knoten, einschließlich der externen Knoten, vorbestellen. Um dies zu tun, müssen Sie die internen Knoten von den externen unterscheiden. Die externen Knoten sind die leeren Bäume, die in vielen Implementierungen NULL
Zeigern entsprechen.
beispielsweise die folgenden Binärbaum
der interne Knoten mit a
und dem externen mit b
markiert ist.
So ist die Vorordnungsdurchquerung ist
aaaabbabbaabbbababb
Es dass die Sprache aller möglichen Preorder-Codes dargestellt werden könnte, ist injektiv, so können Sie die Preorder Reihenfolge umkehren könnte und die ursprüngliche Baum wiederherzustellen.
Einige wie (psudocode):
Node * preorder_to_tree(char *& ptr)
{
if (*ptr++ == ''b')
return nullptr;
Node * p = new Node;
LLINK(p) = preorder_to_tree(ptr);
RLINK(p) = preorder_to_tree(ptr);
return p;
}
Natürlich ist der Algorithmus eine gültige Preorder-Sequenz annimmt.
Wenn Sie Schlüssel in den internen Knoten speichern, dann könnten Sie einen speziellen Schlüssel für die Bezeichnung des leeren Baumes verwenden und der Algorithmus wäre derselbe.
- 1. C++ einen binären Baum
- 2. Haskell: Flachen binären Baum
- 3. Spiegelbild eines binären Baum
- 4. DFS Bäume und DFS Wald
- 5. Konvertieren von binären auf hexadezimal
- 6. einen binären Baum auf seiner Seite drucken
- 7. umge alternative Ebene eines binären Baum
- 8. So implementieren Sie einen nicht binären Baum
- 9. kann keinen Knoten im binären Baum
- 10. C++ destructor für einen binären Baum
- 11. erstellen binären Baum, der keine Duplikate akzeptiert
- 12. JSON in HTML-Baum konvertieren
- 13. Kopieren von einem binären Baum zu einem anderen
- 14. DFS rekursiv vs DFS iterativ
- 15. Verknüpfen von binären Bäumen
- 16. Konvertieren einer binären Zeichenfolge in ein Zweierkomplement
- 17. einen binären Baum Zeichnung in c zu trösten
- 18. Konvertieren einer binären Zeichenfolgendarstellung in ein Bytearray
- 19. Nicht in der Lage, einen binären Baum zu balancieren
- 20. Python - NLP - konvertieren iter (iter (Baum)) in Liste (Baum)
- 21. Expression Baum Kopieren oder Konvertieren
- 22. Sortiertes Array in binären Suchbaum mit minimaler Höhe konvertieren
- 23. die Preorder und inorder Sequenz Mit Hilfe eines binären Baum
- 24. Segmentierungsfehler in DFS
- 25. Perl konvertieren binären Stream zu hex
- 26. Wie transverse ich diesen binären Baum mit Rekursion?
- 27. Count Anzahl der Knoten im binären Baum mit Blättern
- 28. Wie man einen binären Baum in einen binären Suchbaum in-place umwandelt, d. H. Wir können keinen zusätzlichen Raum verwenden
- 29. Methode, die alle Werte von größer oder gleich druckt im binären Baum vorbei in Methode schätzen
- 30. Einfügen des binären Baumknotens
Was wäre, wenn wir nicht wüssten, wie viele Knoten jeder Knoten hat? Ich meine, Vororder-Traversierung von (a, b, c, d, e) kann geschrieben werden (b, a, d, c, e), (c, b, a, d, e), usw. in der Invers-Traversierung. Wie können wir wissen, welcher der gewünschte Baum ist? Ich glaube nicht, dass Vorbestellung allein ausreicht, um den Baum zu erstellen:/ –
Ich gehe davon aus, wie Sie angegeben haben. dass es sich um binäre Bäume handelt. Jeder interne Knoten hat also immer zwei Teilbäume mit drei möglichen Kombinationen: voller Knoten mit beiden Teilbäumen, die sich von einem leeren Baum unterscheiden, ein unvollständiger Knoten mit einem leeren Teilbaum und ein Blattknoten mit beiden leeren Teilbäumen. Wenn Sie nun mit einem M-Baum arbeiten, können Sie schließlich einen äquivalenten Binärbaum erhalten, dessen Preorder-Traversal dem Preorder-Traversal auf dem M-Tree entspricht. Ich schlage vor, Knuth TAOCP V I zu überprüfen, um ein besseres Verständnis für diese Äquivalenz zu bekommen – lrleon
Ich glaube nicht. Binärbaum kann leer sein (?). Übrigens, was bedeutet es vollständiger Knoten und unvollständiger Knoten? –