由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 请大神进来看看为什么我的iterative preorder tranverse过不了,多谢
相关主题
再问个C++的基础问题(in order traversal)G家电面
两道题目GOOG ONSITE 面试
问tree的iterative traversal写了个symmetric tree的stack based iterative实现,有个bug
帮我看一下5行代码请问怎么样才能想到关于tree等比较简洁的答案呢?同时记一下超慢速刷题过半以鼓励自己
关于inordertraversal 的iterative wayFlatten Binary Tree to Linked List的recursive解法
大牛帮我看看这哪错了? iterative inorder traversalTree Iterator && operator overloading的一个问题
leetcode的OJ也会有错吗??有人听说过FIS GT.M吗?上面经
leetcode中的binary tree level order traverse II总是有run tTree的traversal也分BFS和DFS?
相关话题的讨论汇总
话题: root话题: treenode话题: vector话题: else话题: ret
进入JobHunting版参与讨论
1 (共1页)
c**z
发帖数: 669
1
vector inorderTraversal(TreeNode *root) {
// IMPORTANT: Please reset any member data you declared, as
// the same Solution instance will be reused for each test case.
vector ret;
stack s;
for( ; ; )
{
if ( root != NULL)
{
s.push(root);
root = root->left;
}
else
{
if ( s.empty())
return ret;


else
{
TreeNode* root = s.top();
s.pop();
ret.push_back(root->val);
root = root->right;
}

}


}



}
s***e
发帖数: 403
2
这怎么可能过呢。你的最后一个else里面root屏蔽了参数root。
c**z
发帖数: 669
3
楼上能解释下吗

【在 s***e 的大作中提到】
: 这怎么可能过呢。你的最后一个else里面root屏蔽了参数root。
s**x
发帖数: 7506
4
我感觉可能是 return vector 的问题。 试一试 return vector pointer 什么的。
reserve more space for vector may be important too.
s***e
发帖数: 403
5
完全无关
vector可以返回自己,因为有拷贝构造函数和operator=
而且vector的尺寸可以自动伸缩。
建议LZ学会用gdb调试。这个问题应该很简单。

【在 s**x 的大作中提到】
: 我感觉可能是 return vector 的问题。 试一试 return vector pointer 什么的。
: reserve more space for vector may be important too.

c*******2
发帖数: 60
6
把最后else里面那个 TreeNode * 去掉?
p*****3
发帖数: 488
7
==> for( ; ; )
这是个啥...
L*********g
发帖数: 8
8
自己维护堆栈遍历(non-recursive)时,需要标记已处理过的node, node class应该
加一个标记的属性。否则很容易陷在push, pop node中死循环。
请参考深度遍历的实现。
s**x
发帖数: 7506
9

Returning a vector might be very expensive due to copy construction of new
object, compilers might optimize it
though. However I am sure when the object is going so large.
I do not see any other issue in the code.

【在 s***e 的大作中提到】
: 完全无关
: vector可以返回自己,因为有拷贝构造函数和operator=
: 而且vector的尺寸可以自动伸缩。
: 建议LZ学会用gdb调试。这个问题应该很简单。

s**x
发帖数: 7506
10

You do not need for tree traversing.

【在 L*********g 的大作中提到】
: 自己维护堆栈遍历(non-recursive)时,需要标记已处理过的node, node class应该
: 加一个标记的属性。否则很容易陷在push, pop node中死循环。
: 请参考深度遍历的实现。

相关主题
大牛帮我看看这哪错了? iterative inorder traversalG家电面
leetcode的OJ也会有错吗??GOOG ONSITE 面试
leetcode中的binary tree level order traverse II总是有run t写了个symmetric tree的stack based iterative实现,有个bug
进入JobHunting版参与讨论
s**x
发帖数: 7506
11

=== while(true)

【在 p*****3 的大作中提到】
: ==> for( ; ; )
: 这是个啥...

s***e
发帖数: 403
12
在这里你还真没啥别的好办法。
返回指针的话你的vector在栈上,退出函数的时候vector对象自动销毁。
返回引用同上,没办法。
要改的话,除非改成vector* ret=new vector;

【在 s**x 的大作中提到】
:
: === while(true)

s**x
发帖数: 7506
13

That what I meant.

【在 s***e 的大作中提到】
: 在这里你还真没啥别的好办法。
: 返回指针的话你的vector在栈上,退出函数的时候vector对象自动销毁。
: 返回引用同上,没办法。
: 要改的话,除非改成vector* ret=new vector;

c*********s
发帖数: 385
14
In the last nested "else", why did you redefine variable 'root'?
TreeNode* root = s.top();
??
c**z
发帖数: 669
15
我自己用纸走了一遍,应该能走通的,不知道为什么过不了leet code. 谁有经验的来
说说
To peking3:
while(true) won't compile in VS level 4, in our code standard, we use for( ;
;)
To chern1502:
那个是存储在stack最顶端的节点指针,然后pop()出去
To capricornus:
如果不更新,下次循环就还是原来的值
To sdlx:
我在纸上走了一遍,应该能过的,不知道为什么leet code不让过。
c**z
发帖数: 669
16
我自己用纸走了一遍,应该能走通的,不知道为什么过不了leet code. 谁有经验的来
说说
To peking3:
while(true) won't compile in VS level 4, in our code standard, we use for( ;
;)
To chern1502:
那个是存储在stack最顶端的节点指针,然后pop()出去
To capricornus:
如果不更新,下次循环就还是原来的值
To sdlx:
我在纸上走了一遍,应该能过的,不知道为什么leet code不让过。
c*******2
发帖数: 60
17
是要更新, 但不是重新定义,
直接 root = s.top();
如果按照你的, 在else block里的root会屏蔽外面那个root, 出了block就没了吧,然后
下次循环在else block外的root就有问题了.

;

【在 c**z 的大作中提到】
: 我自己用纸走了一遍,应该能走通的,不知道为什么过不了leet code. 谁有经验的来
: 说说
: To peking3:
: while(true) won't compile in VS level 4, in our code standard, we use for( ;
: ;)
: To chern1502:
: 那个是存储在stack最顶端的节点指针,然后pop()出去
: To capricornus:
: 如果不更新,下次循环就还是原来的值
: To sdlx:

c**z
发帖数: 669
18
哦,scope不一样的,找到问题了,多谢各位大神
1 (共1页)
进入JobHunting版参与讨论
相关主题
Tree的traversal也分BFS和DFS?关于inordertraversal 的iterative way
inorder traversal的空间复杂度是O(N) 还是O(logN)?大牛帮我看看这哪错了? iterative inorder traversal
Recover Binary Search Tree:以前的解法通不过了leetcode的OJ也会有错吗??
Uber 面经leetcode中的binary tree level order traverse II总是有run t
再问个C++的基础问题(in order traversal)G家电面
两道题目GOOG ONSITE 面试
问tree的iterative traversal写了个symmetric tree的stack based iterative实现,有个bug
帮我看一下5行代码请问怎么样才能想到关于tree等比较简洁的答案呢?同时记一下超慢速刷题过半以鼓励自己
相关话题的讨论汇总
话题: root话题: treenode话题: vector话题: else话题: ret