6

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;

}
4

2 に答える 2