Redian新闻
>
大牛帮我看看这哪错了? iterative inorder traversal
avatar
大牛帮我看看这哪错了? iterative inorder traversal# JobHunting - 待字闺中
C*n
1
/**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:

vector inorderTraversal(TreeNode *root) {
vector ret;
if(root) {

stack stack;
stack.push(root);

TreeNode* top = stack.top();
while(!stack.empty() || top!=NULL){

while(top->left!=NULL){
stack.push(top->left);
top = top->left;
}
top = stack.top();
ret.push_back(top->val);
stack.pop();
top = top->right;


}
}
return ret;
}
};
avatar
d*o
2
好像每回都跳掉了top->right 的node没有入栈
avatar
y*0
3
top = top->right;之后top可能为null,然后你上面又继续top->left

【在 C*******n 的大作中提到】
: /**
: * Definition for binary tree
: * struct TreeNode {
: * int val;
: * TreeNode *left;
: * TreeNode *right;
: * TreeNode(int x) : val(x), left(NULL), right(NULL) {}
: * };
: */
: class Solution {

avatar
f*h
4
// 不是牛;这样简单
class Solution {
public:

vector inorderTraversal(TreeNode *root) {
vector ret;
stack stack;
TreeNode * top = root;
while (!stack.empty() || top != null) {
if (top != null) {
stack.push(top);
top = top->left;
} else {
top = stack.top();
stack.pop();
ret.push_back(top->val);
top = top->right;
}
}
return ret;
}
};
avatar
H*7
5
good one

★ 发自iPhone App: ChineseWeb 8.7

【在 f********h 的大作中提到】
: // 不是牛;这样简单
: class Solution {
: public:
:
: vector inorderTraversal(TreeNode *root) {
: vector ret;
: stack stack;
: TreeNode * top = root;
: while (!stack.empty() || top != null) {
: if (top != null) {

avatar
b*g
6
基本就是楼上几位说的两个问题
1.top->right始终没有进stack。当第二层的while loop结束后,top访问到了一个没有
left child的节点,输出该节点后访问到了他的right child(top=top->right),假设
这个节点为X,然后因为stack非空再次回到内层的while loop开始把这个x的left
child依次压入,但x始终没有入栈。
2.如果top->right为NULL,因为stack非空,仍旧会回到内层while loop,此时你直接
访问了NULL->left: while(top->left!=NULL)

【在 C*******n 的大作中提到】
: /**
: * Definition for binary tree
: * struct TreeNode {
: * int val;
: * TreeNode *left;
: * TreeNode *right;
: * TreeNode(int x) : val(x), left(NULL), right(NULL) {}
: * };
: */
: class Solution {

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。