Inorder Traversierung eines Binärbaumes
-
Hallo,
ich bin auf der Suche nach nem Beispiel für die Inorder Traversierung in einem Binärbaum. Lässt sich das nur mit Rekursionen lösen? Oder geht es damit nur einfacher?
Wäre dankbar, falls mir jemand nen Quellcode als Beispiel posten könnte.Grüße Cyrox
-
War glaub ich etwas voreilig. Die Suche nach mit englischen keywords hat mehr als genug zu Tage gefördert...
Aber falls jemand noch Tipps hat: immer raus damit
Cy
-
Jetzt hab ich doch ne Frage.
Hab jetzt folgende Funktion implementiert, die so auch prima funktioniert.
void traverse(cd *inorder,) { if(inorder == leaf) return; traverse( inorder->_left ); cout << inorder->_interpret << endl; traverse( inorder->_right ); }Hab jetzt aber folgendes Problem:
Die rekursive Funktion wird aus einer Funktion cdkomplett() aufgerufen, die zum Schreiben der Daten ein Feld mitliefert. (Eine Ausgabe ist nicht erwünscht)
Wie kann ich nun aus traverse() in die Felder der aufrufenden Funktion schreiben? Besteht die Möglichkeit dieses Felder erneut zu ergeben oder wie würde sich so etwas lösen lassen?Cy
-
Ja, du könntest anstelle des cout<<... irgendeine andere Funktion mit dem aktuellen Element aufrufen. z.B. kannst du eine Referenz auf die Itemliste übergeben und füllen:
void traverse(cd *inorder,list<string>& erg) { if(inorder == leaf) return; traverse( inorder->_left, erg ); erg.push_back(inorder->_interpret); traverse( inorder->_right, erg ); } ... traverse(_cds,_interpreten); ...