leetcode--Binary Tree Inorder Traversal
2017-08-08 11:31
232 查看
Given a binary tree, return the inorder traversal of its nodes' values.
For example:
Given binary tree
return
Note: Recursive solution is trivial, could you do it iteratively?
题意:中序遍历儿二叉树
分类:二叉树
解法1:递归
[java] view
plain copy
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> res = new ArrayList<Integer>();
helper(root,res);
return res;
}
void helper(TreeNode p,List<Integer> res){
if(p==null) return;
if(p.left!=null){
helper(p.left, res);
}
res.add(p.val);
if(p.right!=null){
helper(p.right, res);
}
}
}
解法2:非递归
[java] view
plain copy
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public List<Integer> inorderTraversal(TreeNode root) {
Stack<TreeNode> stack = new Stack<TreeNode>();
List<Integer> res = new ArrayList<Integer>();
TreeNode cur = root;
while(stack.size()>0||cur!=null){
while(cur!=null){
stack.add(cur);
cur = cur.left;
}
if(stack.size()>0){
TreeNode p = stack.pop();
res.add(p.val);
cur = p.right;
}
}
return res;
}
}
原文链接http://blog.csdn.net/crazy__chen/article/details/46445383
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:递归
[java] view
plain copy
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> res = new ArrayList<Integer>();
helper(root,res);
return res;
}
void helper(TreeNode p,List<Integer> res){
if(p==null) return;
if(p.left!=null){
helper(p.left, res);
}
res.add(p.val);
if(p.right!=null){
helper(p.right, res);
}
}
}
解法2:非递归
[java] view
plain copy
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public List<Integer> inorderTraversal(TreeNode root) {
Stack<TreeNode> stack = new Stack<TreeNode>();
List<Integer> res = new ArrayList<Integer>();
TreeNode cur = root;
while(stack.size()>0||cur!=null){
while(cur!=null){
stack.add(cur);
cur = cur.left;
}
if(stack.size()>0){
TreeNode p = stack.pop();
res.add(p.val);
cur = p.right;
}
}
return res;
}
}
原文链接http://blog.csdn.net/crazy__chen/article/details/46445383
相关文章推荐
- LeetCode 106. Construct Binary Tree from Inorder and Postorder Traversal
- 《leetCode》:Construct Binary Tree from Inorder and Postorder Traversal
- leetcode题解:Construct Binary Tree from Inorder and Postorder Traversal(根据中序和后序遍历构造二叉树)
- [Leetcode] Construct Binary Tree from Inorder and Postorder Traversal
- Leetcode-106. Construct Binary Tree from Inorder and Postorder Traversal
- leetcode-Binary Tree Inorder Traversal
- [LeetCode]105. Construct Binary Tree from Preorder and Inorder Traversal
- Binary Tree Inorder Traversal @ LeetCode
- leetcode -day23 Construct Binary Tree from Inorder and Postorder Traversal & Construct Binary Tree f
- leetcode || 94、Binary Tree Inorder Traversal
- LeetCode: Binary Tree Inorder Traversal [094]
- 【Leetcode】Construct Binary Tree from Preorder and Inorder Traversal
- [LeetCode] Construct Binary Tree from Inorder and Postorder Traversal
- leetcode Construct Binary Tree from Inorder and Postorder Traversal
- leetcode---Construct Binary Tree from Preorder and Inorder Traversal---树的构建
- Leetcode - Tree - 106. Construct Binary Tree from Inorder and Postorder Traversal(根据中序遍历和后序遍历重构二叉树)
- LeetCode OJ平台上Binary Tree Inorder Traversal题目使用java堆栈方式实现
- LeetCode_Construct Binary Tree from Inorder and Postorder Traversal
- [leetcode] 106.Construct Binary Tree from Inorder and Postorder Traversal
- LeetCode 105. Construct Binary Tree from Preorder and Inorder Traversal