バイナリ検索ツリー内のすべてのノードの内容を文字列と再帰を使って出力したいとします。問題は、このコードを使用すると、ルートの内容のみが表示されることです。その理由は、InOrder(BSTNode * bst_node)関数を再帰的に呼び出すたびに、私のstringstream変数が再度作成されるという理由がわかります。出力のためにストリングストリームを利用している間にこの問題を解決するために私のコードに行うことはできますか?stringstream C++を使用してバイナリ検索ツリー内のすべてのノードを再帰的に出力する方法
これは私のコードです:多分そのような
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();
}
これは機能しませんでした。残念ながら、コードは私にセグメンテーションエラーを与えます。 –
最初の行にタイプミスがあるようです。 if節は '(bst_node == NULL)'でなければなりません。それは '!'ではありません。 – matz
@CarlosEscobedoおそらく、別の理由でsegfaultsされています。ただし、提供されたコードは、汎用DFSトラバーサル – Pavel