c**g 发帖数: 45 | 1 void inorderTraversalByIteration(TreeNode* root, vector& ret)
{
if(root == 0)
return;
stack s;
s.push(root);
while(s.size() > 0)
{
if(s.top()->left != 0)
{
s.push(s.top()->left);
}else
{
TreeNode* cur = s.top();
s.pop();
ret.push_back(cur->val);
if(cur->right != 0)
s.push(cur->right);
}
}
} |
n*****5 发帖数: 984 | 2 假设 root 有个左节点 。你就会 入站 root, left ,弹出 left。 入站left 循环 |
m*********a 发帖数: 3299 | 3 这个code 是错的,真如楼上所说,会进入死循环。
你在else 后加while (!s.empty())
然后说if (s->right!=NULL) ,push stack 后,break;
【在 c**g 的大作中提到】 : void inorderTraversalByIteration(TreeNode* root, vector& ret) : { : if(root == 0) : return; : stack s; : s.push(root); : while(s.size() > 0) : { : if(s.top()->left != 0) : {
|
r******l 发帖数: 10760 | 4 这种问题自己单步执行一下不就知道了?难道只会写代码,不会debug? |