[leetcode][tree] Binary Tree Inorder Traversal
来源:互联网 发布:linux vi 保存并退出 编辑:程序博客网 时间:2024/05/29 12:59
题目:
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]
.
Note: Recursive solution is trivial, could you do it iteratively?
递归实现:
/** * 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; inorderTraversalCore(root, res); return res; }private: void inorderTraversalCore(TreeNode *root, vector<int> &res){ if(NULL == root) return; inorderTraversalCore(root->left, res); res.push_back(root->val); inorderTraversalCore(root->right, res); }};非递归实现(栈+循环)
/** * Definition for a binary tree node. * 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 (NULL == root) return res;stack<TreeNode *> sta;TreeNode *p = root;//用于遍历,指向当前节点while (p || !sta.empty()){//注意循环结束条件while (p){//如果有左孩子,一直入栈(找到最左节点)sta.push(p);p = p->left;}p = sta.top();//访问栈顶元素sta.pop();res.push_back(p->val);p = p->right;//考察栈顶元素的右孩子}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
- 我的博客
- 使用 163 邮箱接收 ASP.NET 用户反馈
- iOS开发-Xcode Debug、Release、Archive、Profile、Analyze概念解释
- python学习疑点总结
- Linux kernel 初始化加速
- [leetcode][tree] Binary Tree Inorder Traversal
- HDU—1171 DP 01背包
- android:screenOrientation属性限制
- 设置ListView的属性
- MAVEN Error: java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWo
- 【笔记】JavaScript编码规范- jQuery
- Struts1和Struts2的区别 ------上海xx信息股份有限公司面试题
- C#操作字符串方法总结
- flume-ng 之 netcat ---logger