[leetcode-94]Binary Tree Inorder Traversal(c++)
来源:互联网 发布:仓库管理java源码下载 编辑:程序博客网 时间:2024/04/30 22:31
问题描述:
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?
分析:这道题用递归的方法是很容易实现的,代码1给出了递归的做法。但是题目要求用迭代的方法实现。那很自然的使用stack来模拟递归方法的实现。
这道题我实现的时候遇到了问题,我实现的时候没有使用临时变量P,而是使用stack.top(),这样就带来了问题,导致总会去重复执行某代码。导致死循环。之所以会出现这种情况,是没有能把中间部分的元素出栈。
代码1:0ms(递归)
/** * 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: void inorder(TreeNode* root, vector<int>& res) { if (!root) return; inorder(root->left, res); res.push_back(root->val); inorder(root->right, res); } vector<int> inorderTraversal(TreeNode* root) { vector<int> res; inorder(root,res); return res; }};
代码2:0ms(非递归)
/** * 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) { stack<TreeNode *> stack; vector<int> res; TreeNode* p = root; while (p || !stack.empty()) { if (p) { stack.push(p); p = p->left; } else { p = stack.top(); stack.pop(); res.push_back(p->val); p = p->right; } } return res; }};
0 0
- [leetcode-94]Binary Tree Inorder Traversal(c++)
- 【LeetCode-94】Binary Tree Inorder Traversal(C++)
- [C++]LeetCode: 48 Binary Tree Inorder Traversal
- #LeetCode# #C++# Binary Tree Inorder Traversal
- [leetcode 94] Binary Tree Inorder Traversal
- Leetcode NO.94 Binary Tree Inorder Traversal
- leetcode-94 Binary Tree Inorder Traversal
- leetcode || 94、Binary Tree Inorder Traversal
- Binary Tree Inorder Traversal - LeetCode 94
- Leetcode[94]-Binary Tree Inorder Traversal
- leetcode(94):Binary Tree Inorder Traversal
- leetcode-94-Binary Tree Inorder Traversal
- Leetcode 94 Binary Tree Inorder Traversal
- leetcode[94]:Binary Tree Inorder Traversal
- LeetCode(94) Binary Tree Inorder Traversal
- Leetcode # 94 Binary Tree Inorder Traversal
- leetcode 94: Binary Tree Inorder Traversal
- leetcode-94:Binary Tree Inorder Traversal (Java)
- NYOJ 94 cigarettes
- 题解分析及总结:经典逻辑面试题“假设有一个池塘,里面有无穷多的水,现有2个空水壶,如何使用少于15L的水,用2个水壶从池塘里取得3升水”
- 3617POJ
- 【C/C++学院】0828-数组与指针/内存分配/数据结构数组接口与封装
- Dijkstra(优先队列优化)
- [leetcode-94]Binary Tree Inorder Traversal(c++)
- Num 28 : NYOJ : 0106 背包问题 [ 贪心 ]
- 动态规划小结
- MapReduce执行流程详解
- HDU 1231 最大连续子序列(动态规划)
- 相邻图排序
- 只会左键断点?是时候试试这样那样断点了
- haystack论文翻译以及和TFS的对比
- Solr4.7从文件创建索引