스택을 사용하여 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