J'ai un arbre binaire T que je voudrais copier dans un autre arbre.Question de conception C++ sur la traversée d'arbres binaires
Supposons que j'ai une méthode de visite qui obtient une évaluation à chaque noeud:
struct visit
{
virtual void operator() (node* n)=0;
};
et j'ai un algorithme de visiteur
void visitor(node* t, visit& v)
{
//do a preorder traversal using stack or recursion
if (!t) return;
v(t);
visitor(t->left, v);
visitor(t->right, v);
}
J'ai 2 questions:
- Je me suis installé sur l'utilisation de l'approche basée sur les foncteurs parce que je vois que le graphique boost fait cela (visiteurs du vertex). Aussi, j'ai tendance à répéter le même code pour traverser l'arbre et faire des choses différentes à chaque nœud. Est-ce un bon design pour se débarrasser du code dupliqué? Quelles autres conceptions alternatives sont là?
- Comment l'utiliser pour créer un nouvel arbre binaire à partir d'un arbre existant? Je peux garder une pile sur le foncteur de visite si je veux, mais il est lié à l'algorithme dans le visiteur.
- Comment est-ce que j'incorporerais des traversées d'ordre postérieur ici? Une autre classe de foncteurs?
Est-ce devoir? Si c'est tag comme tel –
Cela ressemble à au moins trois questions =) –
Non pas du tout à faire des devoirs. Souhait qu'il était! Trop vieux pour faire ses devoirs. J'ai l'impression d'être breveté pour avoir acheté des cigarettes. Merci :-) – user231536