2016-07-02 13 views
1

Ich habe gelesen und Karten in C++ zur Verfügung gestellt STL sind mit Baum implementiert, so kann ich sie als Baum durchlaufen? Kann ich einen Satz oder eine Karte vorbestellen und nachbestellen? Ich weiß, dass ich In-Order-Traversal bekommen kann, indem ich einfach über alle Elemente iteriere.Vorbestellung und Nachbestellung Traversal in C++ STL Set und Karte

set<int> tree; 
tree.insert(1); 
tree.insert(2); 
tree.insert(3); 

inorder traveler für diesen Baum sollte 1,2,3 und vorbestellen 2,1,3 und nachbestellen 1,3,2. Wie kann ich den zweiten Buchstaben bekommen, wenn ich einen Baum als gesetzt habe?

Danke !!

+4

"Ein Baum", ja, aber kein bestimmter Baum. Maps und Sets bieten Ihnen eine geordnete Iteration über die Werte in Schlüsselreihenfolge. Die Details des Baumes sind nicht sichtbar oder beobachtbar. –

Antwort

1

STL-Set und Map sind ausgeglichene Bäume (wie rot-schwarze Bäume). Sie fügen Elemente nicht einfach ein und behalten sie in einer Reihenfolge bei, sie können ihre Elemente ausgleichen, um Bäume zu behalten. H (logn). Deine Elemente sind also nicht unbedingt in einem Baum, der so aussieht, wie du denkst, und es gibt keine Funktionen, die es dir erlauben würden, zu sehen, wie sie sind.