2016-07-02 1 views
1

J'ai lu ensemble et les cartes fournies dans C++ STL sont implémentées en utilisant l'arbre, donc je peux les traverser comme arbre? Puis-je obtenir une traversée de pré-commande et de post-commande d'un ensemble ou d'une carte? Je sais que je peux obtenir la traversée dans l'ordre en itérant simplement sur tous les éléments.traversée de précommande et de post-commande dans C++ stl ensemble et carte

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

afinde traveral pour cet arbre doit être 1,2,3 et précommander 2,1,3 et post-ordre 1,3,2. Comment puis-je obtenir la lettre deux si j'ai l'arbre comme ensemble?

Merci!

+4

"Un arbre", oui, mais pas d'arbre spécifique. Les cartes et les ensembles vous fournissent l'itération ordonnée sur les valeurs dans l'ordre des clés. Les détails de l'arbre ne sont pas exposés ou observables. –

Répondre

1

Le jeu de cartes et la carte sont des arbres équilibrés (comme les arbres rouge-noir). Ils n'insèrent pas seulement des éléments et les gardent dans un ordre, ils peuvent équilibrer leurs éléments pour garder les arbres h O (logn). Ainsi, vos éléments ne sont pas nécessairement dans un arbre qui ressemble à ce que vous pensez et il n'y a aucune fonction qui vous permettrait de voir comment ils sont.