我想要使用堆棧來獲得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;
}
如果我是你,我會找到一個簡單的測試用例在調試器中無法正常工作並遍歷代碼,以查看是否發生了什麼是您認爲應該發生的事情。 – NPE
我已經嘗試了多種情況來查看預訂是否有問題。我知道前序奏效。 – Aaron
那麼你的代碼不工作的方式是什麼?你能舉一個簡單的樹的例子,它不起作用,以及實際與預期的產出? – NPE