【LeetCode】94.Binary Tree Inorder Traversal(Medium)解题报告
题目地址:https://leetcode.com/problems/binary-tree-level-order-traversal-ii/description/
题目描述:
Given a binary tree, return the inorder traversal of its nodes’ values.
For example:
Given binary tree [1,null,2,3],
1
\
2
/
3
return [1,3,2].
Note: Recursive solution is trivial, could you do it iteratively?
Solution1:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
二叉树的中序遍历:左根右
time : O(n)
space : O(n)
递归形式和
*/
class Solution {
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> res = new ArrayList<>();
if(root == null) return res;
helper(res,root);
return res;
}
public static void helper(List<Integer> res,TreeNode root){
if(root == null) return;
helper(res,root.left);
res.add(root.val);
helper(res,root.right);
}
}
Solution2:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
二叉树的中序遍历:左根右
time : O(n)
space : O(n)
递归形式和迭代stack
*/
class Solution {
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> res = new ArrayList<>();
if(root == null) return res;
Stack<TreeNode> stack = new Stack<>();
TreeNode cur = root;
while(cur != null || !stack.isEmpty()){
while(cur != null){
stack.push(cur);
cur = cur.left;
}
cur = stack.pop();
res.add(cur.val);
cur = cur.right;
}
return res;
}
}
Date:2018年3月17日