C++ で BST を実装しようとしていました。これは、トラバーサルのために実行し、ツリーの要素を含むベクトルを返す特定のメンバー関数です。ここで、現在のノードに設定したスタック pop() 関数で問題が発生します。
void value not ignored as it ought to be
空のスタックは、前の pop() 呼び出しの後に void 値を返すことを理解しています。しかし、これに対する解決策は何ですか。このトラバーサル アルゴリズムでは、スタックから最後のノードを取得する必要があるためです。
vector <int> BSTree::in_order_traversal()
{
vector <int> list;
stack <Node *> depthStack;
Node * cur = root;
while ( !depthStack.empty() || cur != NULL ) {
if (cur != NULL) {
depthStack.push(cur);
cur = cur->left;
}
else {
cur = depthStack.pop(); // Heres the line
list.push_back(cur->key);
cur = cur->right;
}
}
return list;
}