【LeetCode】103. Binary Tree Zigzag Level Order Traversal(Medium)解题报告
2018-03-14 18:28
489 查看
【LeetCode】103. Binary Tree Zigzag Level Order Traversal(Medium)解题报告
题目地址:https://leetcode.com/problems/binary-tree-level-order-traversal/description/
题目描述:
Given a binary tree, return the zigzag level order traversal of its nodes’ values. (ie, from left to right, then right to left for the next level and alternate between).
Solution:
Date:2018年3月14日
题目地址:https://leetcode.com/problems/binary-tree-level-order-traversal/description/
题目描述:
Given a binary tree, return the zigzag level order traversal of its nodes’ values. (ie, from left to right, then right to left for the next level and alternate between).
For example: Given binary tree [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 return its zigzag level order traversal as: [ [3], [20,9], [15,7] ]
Solution:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } 二叉树的层序遍历,很经常出现的一个问题 第一种方法:queue time : O(n) space : O(n) */ class Solution { public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> res = new ArrayList<>(); if(root == null) return res; Queue<TreeNode> queue = new LinkedList<>(); queue.offer(root); while(!queue.isEmpty()){ int size = queue.size(); List<Integer> list = new ArrayList<>(); for(int i=0 ; i<size ;i++){ TreeNode cur = queue.poll(); if(cur.left!=null) queue.offer(cur.left); if(cur.right!=null) queue.offer(cur.right); list.add(cur.val); } res.add(list); } return res; } }/** * 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<List<Integer>> zigzagLevelOrder(TreeNode root) { List<List<Integer>> res = new ArrayList<>(); if(root == null) return res; Queue<TreeNode> queue = new LinkedList<>(); queue.offer(root); boolean x = true; while(!queue.isEmpty()){ int size = queue.size(); List<Integer> list = new ArrayList<>(); for(int i=0 ; i<size ; i++){ TreeNode cur = queue.poll(); if(x){ list.add(cur.val); }else{ list.add(0,cur.val); } if(cur.left != null) queue.offer(cur.left); if(cur.right != null) queue.offer(cur.right); } res.add(list); x = x ? false : true; } return res; } }
Date:2018年3月14日
相关文章推荐
- 【LeetCode】229.Majority Element II(Medium)解题报告
- 【LeetCode】285.Inorder Successor in BST(Medium)(带锁题)解题报告
- 【LeetCode】324.Wiggle Sort II(Medium)解题报告
- 【LeetCode】230.Kth Smallest Element in a BST(Medium)解题报告
- 【LeetCode】102.Binary Tree Level Order Traversal(Medium)解题报告
- 【LeetCode】199.Binary Tree Right Side View(Medium)解题报告
- 【LeetCode】238.Product of Array Except Self(Medium)解题报告
- 【LeetCode】351.Android Unlock Patterns(Medium)解题报告
- LeetCode解题报告 108. Convert Sorted Array to Binary Search Tree [medium]
- 【LeetCode】60.Permutation Sequence(medium)解题报告
- 【LeetCode】94.Binary Tree Inorder Traversal(Medium)解题报告
- 【LeetCode】491.Increasing Subsequences(Medium)解题报告
- 【LeetCode】75.Sort Colors(Medium)解题报告
- LeetCode解题报告 406. Queue Reconstruction by Height [medium]
- 【LeetCode】464.Can I Win(Medium)解题报告
- 【LeetCode】6.ZigZag Conversion(Medium)解题报告
- 【LeetCode】337.House Robber III(Medium)解题报告
- 【LeetCode】152.Maximum Product Subarray(Medium)解题报告
- 【LeetCode】382.Linked List Random Node(medium)解题报告
- LeetCode解题报告 96. Unique Binary Search Trees [medium]