leetcode第46题(binary-tree-zigzag-level-order-traversal)
2018-02-09 16:00
471 查看
题目:
Given a binary tree, return the zigzag level ordertraversal 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,#,#,15,7},
return its zigzag level order traversal as:
confused what"{1,#,2,3}"means? > read more
on how binary tree is serialized on OJ.
OJ's Binary Tree Serialization:
The serialization of a binary tree follows a level order traversal, where '#' signifies a path terminator where no node exists below.
Here's an example:
The above binary tree is serialized as"{1,2,3,#,#,4,#,#,5}".
思路:用两个队列或者两个堆实现。或者是用一个队列或者堆,奇数行的时候实现翻转即可。
代码:
Given a binary tree, return the zigzag level ordertraversal 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,#,#,15,7},
3 / \ 9 20 / \ 15 7
return its zigzag level order traversal as:
[ [3], [20,9], [15,7] ]
confused what"{1,#,2,3}"means? > read more
on how binary tree is serialized on OJ.
OJ's Binary Tree Serialization:
The serialization of a binary tree follows a level order traversal, where '#' signifies a path terminator where no node exists below.
Here's an example:
1 / \ 2 3 / 4 \ 5
The above binary tree is serialized as"{1,2,3,#,#,4,#,#,5}".
思路:用两个队列或者两个堆实现。或者是用一个队列或者堆,奇数行的时候实现翻转即可。
代码:
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ import java.util.ArrayList; import java.util.Collections; import java.util.LinkedList; import java.util.Queue; public class Solution { public ArrayList<ArrayList<Integer>> zigzagLevelOrder(TreeNode root) { ArrayList<ArrayList<Integer>> result = new ArrayList<>(); Queue<TreeNode& 9a02 gt; queue = new LinkedList<>(); boolean left = true; if (root != null) { queue.add(root); } while (!queue.isEmpty()) { int n = queue.size(); ArrayList<Integer> temp = new ArrayList<>(); for(int i=n-1;i>=0;i--) { TreeNode node = queue.poll(); if (node.left != null) { queue.add(node.left); } if (node.right != null) { queue.add(node.right); } temp.add(node.val); } if (result.size() % 2 != 0) { Collections.reverse(temp); } result.add(temp); } return result; } }
相关文章推荐
- 【leetcode】Binary Tree Zigzag Level Order Traversal
- leetcode — binary-tree-zigzag-level-order-traversal
- leetcode---Binary Tree Zigzag Level Order Traversal---层次遍历
- LeetCode: Binary Tree Zigzag Level Order Traversal [103]
- LeetCode-Binary Tree Zigzag Level Order Traversal-二叉树锯齿层次遍历-二叉树DFS层次遍历
- 【LeetCode-103】Binary Tree Zigzag Level Order Traversal
- LeetCode Binary Tree Zigzag Level Order Traversal
- [LeetCode] Binary Tree Zigzag Level Order Traversal
- LeetCode Binary Tree Zigzag Level Order Traversal
- LeetCode解题报告—— Unique Binary Search Trees & Binary Tree Level Order Traversal & Binary Tree Zigzag Level Order Traversal
- [Leetcode] Binary Tree Level Order Traversal & Binary Tree Zigzag Level Order Traversal
- 【leetcode 层序遍历】Binary Tree Zigzag Level Order Traversal
- LeetCode题解: Binary Tree Zigzag Level Order Traversal
- LeetCode103 Binary Tree Zigzag Level Order Traversal
- 103. Binary Tree Zigzag Level Order Traversal Leetcode Python
- 【leetcode】Binary Tree Zigzag Level Order Traversal (middle)
- Leetcode: Binary Tree Zigzag Level Order Traversal
- [LeetCode]Binary Tree Zigzag Level Order Traversal
- [LeetCode] Binary Tree Zigzag Level Order Traversal
- leetcode笔记:Binary Tree Zigzag Level Order Traversal