Ich drucke den Inhalt aller Knoten in meinem binären Suchbaum mit einem Stringstream und Rekursion. Das Problem ist, dass wenn ich diesen Code verwende, nur der Inhalt der Wurzel angezeigt wird. Ich weiß, der Grund ist, dass jedes Mal, wenn ich die Funktion InOrder (BSTNode * bst_node) rekursiv aufruft, meine Stringstream-Variable erneut erstellt wird. Was kann ich mit meinem Code tun, um dieses Problem zu beheben, während weiterhin ein Stringstream für die Ausgabe verwendet wird?Wie rekursiv alle Knoten in einem binären Suchbaum mit Stringstream C++
Dies ist mein Code:
string BSTree::InOrder(BSTNode* bst_node) {
stringstream ss;
if (root_ == NULL) {
return "";
} else {
if (bst_node->GetLeftChild() != NULL) {
InOrder(bst_node->GetLeftChild());
}
ss << bst_node->GetContents() << " ";
if (bst_node->GetRightChild() != NULL) {
InOrder(bst_node->GetRightChild());
}
}
return ss.str();
}
Dies hat nicht funktioniert. Leider gibt mir der Code einen Segmentierungsfehler. –
Es scheint einen Tippfehler in der ersten Zeile zu geben; Die if-Klausel sollte '(bst_node == NULL)' sein, also kein '!'. – matz
@CarlosEscobedo vielleicht segfolds aus einem anderen Grund, außer dass der Code generische DFS-Traversal – Pavel