スタックを使用してBSTの高さを取得しようとしています。私はプリオーダーを使用して、スタックの最大サイズを調べるべきだと言われました。しかし、これは動作していないようです。私が間違っていることのアイデア。スタックを使用してBSTの高さを取得する
int PBT::maxDepth() {
if (!root) {
return -1;
}
int depth=0;
stack<TreeNode *>s;
TreeNode * nodePtr=root;
for (; ;) {
while (nodePtr) {
s.push(nodePtr);
if (s.size() > depth)
depth = s.size();
nodePtr=nodePtr->left;
}if (s.empty()) {
break;
}
nodePtr=s.top();
s.pop();
nodePtr=nodePtr->right;
}
return depth;
}
(ノードポインタが
.first
に明らかである)を押して、あなたがポップアップする前に、
で
current_depth
を復元することデバッガのコードをステップ実行して何が起こっているのかを確認します。 – NPE複数のケースを試して、予約注文に問題があるかどうかを確認しました。私はプリオーダーが動作することを知っています。 – Aaron
あなたのコードはどのように機能していませんか?単純なツリーの例、実際の出力と予想される出力の両方を出力できますか? – NPE