C++ imprimer un arbre de recherche binaire

Rien de mieux à faire que cette fête de Noël, j'ai donc décidé d'essayer de faire un arbre de recherche binaire. Je suis coincé avec la fonction d'impression. Comment la logique qui sous-tend-il? Depuis l'arbre est déjà de l'insérer dans un peu de l'ordre de tri, et je veux imprimer l'arbre de la plus petite des valeurs aux plus grands.

Donc j'ai besoin de voyager à l'extrême gauche de la branche de l'arbre pour imprimer la première valeur. Bon, alors après comment dois-je rappeler le chemin du retour, j'ai besoin d'enregistrer le nœud précédent? Une recherche dans wikipédia m'a donné une solution qui ils ont utilisé de la pile. Et les autres solutions que je ne comprenais pas comment ils ont fait, donc je pose la question ici en espérant que quelqu'un pourra m'éclairer.

Je me demande aussi mon insérer une fonction est OK. J'ai vu de l'autre solution étant plus petit.

void treenode::insert(int i)
{

   if(root == 0)
   {
      cout << "root" << endl;
      root = new node(i,root);
   }
   else
   {
      node* travel = root;
      node* prev;
      while(travel)
      {
         if(travel->value > i)
         {
            cout << "travel left" << endl;
            prev = travel;
            travel = travel->left;
         }
         else
         {
            cout << "travel right" << endl;
            prev = travel;
            travel = travel->right;
         }
      }
      //insert
      if(prev->value > i)
      {
         cout << "left" << endl;
         prev->left = new node(i);
      }
      else
      {
         cout << "right" << endl;
         prev->right = new node(i);
      }
   }

}

void treenode::print()
{

   node* travel = root;
   while(travel)
   {
      cout << travel->value << endl;
      travel = travel->left;
   }

}
InformationsquelleAutor starcorn | 2010-12-27