Я задавал вопросы по LeetCode (новые в LeetCode) и написал решение для итеративного обхода бинарного дерева. Я использовал стек и считаю, что моя логика работает, но LeetCode выдает ошибку времени выполнения. Как я могу это исправить?
Вот мой код:
class Solution {
public:
vector<int> postorderTraversal(TreeNode* root) {
TreeNode* temp = root;
vector<int> v;
stack<TreeNode*> s;
if (temp == NULL)
return v;
while (true){
while (temp != NULL){
if (temp->right)
s.push(temp->right);
s.push(temp);
temp = temp->left;
}
if (s.empty())
break;
temp = s.top();
s.pop();
if (s.top() == temp->right){
s.pop();
s.push(temp);
temp = temp->right;
}else{
v.push_back(temp->val);
temp = NULL;
}
}
return v;
}
};
Пожалуйста, помогите, спасибо!
while(true) {...} return v;
Я не вижу, чтобы этот возврат когда-либо использовался. - person Ted Lyngmo   schedule 22.10.2018if (s.empty()) break;
соответствующим образом завершает цикл. - person ggorlen   schedule 22.10.2018