leetcode: Binary Tree Inorder Traversal
来源:互联网 发布:java p2p聊天系统 编辑:程序博客网 时间:2024/05/22 05:29
Given a binary tree, return the inorder traversal of its nodes' values.
For example:
Given binary tree {1,#,2,3}
,
1 \ 2 / 3
return [1,3,2]
.
/** * 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<int> inorderTraversal(TreeNode *root) { vector< int> res; if(!root) return res; core( root, res); return res; } void core( TreeNode *root, vector< int> &res){ if( root == NULL) return; core( root->left, res); res.push_back(root->val); core( root->right, res); }};
/** * 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<int> inorderTraversal(TreeNode *root) { vector<int> res; if( !root) return res; stack< TreeNode *> stk; stk.push(root); while( !stk.empty()){ TreeNode *p = stk.top(); stk.pop(); if( p->left == NULL && p->right == NULL){ res.push_back(p->val); } else{ if( p->right) stk.push(p->right); stk.push(p); if( p->left) stk.push(p->left); p->left = p->right = NULL;//这句不能少,因为之前已经将p的左儿子,有儿子放入栈里,如果这里不置为NULL,那么会无限循环,不断把p左右儿子放入栈中 } } return res; }};
标准非递归:
/** * 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<int> inorderTraversal(TreeNode *root) { vector<int> res; if( !root) return res; stack< TreeNode *> stk; TreeNode *p = root; while(true){ while(p){ stk.push(p); p = p->left; } if( !stk.empty()){ p = stk.top(); stk.pop(); res.push_back(p->val); p = p->right; } else break; } return res; }};
0 0
- LeetCode: Binary Tree Inorder Traversal
- [LeetCode]Binary Tree Inorder Traversal
- LeetCode Binary Tree Inorder Traversal
- [Leetcode] Binary Tree Inorder Traversal
- Leetcode: Binary Tree Inorder Traversal
- LeetCode Binary Tree Inorder Traversal
- LeetCode : Binary Tree Inorder Traversal
- [Leetcode] Binary Tree Inorder Traversal
- 【leetcode】Binary Tree Inorder Traversal
- [LeetCode]Binary Tree Inorder Traversal
- Leetcode: Binary Tree Inorder Traversal
- [leetcode]Binary Tree Inorder Traversal
- LeetCode-Binary Tree Inorder Traversal
- Leetcode Binary Tree Inorder Traversal
- [leetcode] Binary Tree Inorder Traversal
- LeetCode - Binary Tree Inorder Traversal
- [LeetCode] Binary Tree Inorder Traversal
- LeetCode | Binary Tree Inorder Traversal
- android——获得本应用的包名
- 数据结构图--课程设计
- 10天学完java基础-链表
- Linux Shell常用技巧(二)
- ORA-00600: internal error code, arguments: [keltnfy-ldmInit], [46], [1], [], [], [], [], []
- leetcode: Binary Tree Inorder Traversal
- 禁止UITextField的弹出菜单 Select / Select All的出现
- Linux Shell常用技巧(三)
- RabbitMQ (消息队列)专题学习07 RPC
- Linux Shell常用技巧(四)
- 第十七周自由练习项目——acm 商品 销售
- Linux Shell常用技巧(五)
- Python实现多个文件中替换字符串
- 写给java web一年左右工作经验的人