您的位置:首页 > 其它

【LeetCode】94.Binary Tree Inorder Traversal(Medium)解题报告

2018-03-17 09:54 537 查看
【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日
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode tree