C++ - print aus einem binären Suchbaum

Habe nichts besseres zu tun dieses Weihnachten Urlaub, so dass ich beschloss zu versuchen, machen einen binären Suchbaum. Ich bin stecken, mit der print-Funktion. Wie soll die Logik dahinter funktioniert? Da der Baum bereits einsetzen, es in einem einigermaßen sortiert, und ich will zu drucken, die die Struktur von kleinsten Werten die größte.

Also muss ich Reisen, um an der am weitesten linken Zweig des Baumes zu drucken den ersten Wert. Richtig, so nach der dass wie ich erinnere mich an den Weg zurück, den brauche ich zum speichern der vorherigen Knoten? Eine Suche in der wikipedia gab mir eine Lösung, die Sie verwendet, stack. Und andere Lösungen, die ich konnte nicht ganz verstehen, wie Sie es geschafft hat, so Frage ich hier, anstatt in der Hoffnung, jemand kann enlight mich.

Ich Frage mich auch, mein insert-Funktion ist OK. Ich habe gesehen, andere die Lösung wird kleiner.

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

Schreibe einen Kommentar