Binary Tree Zigzag Level Order Traversal
2017-06-10 16:33
357 查看
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
return its zigzag level order traversal as:
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] ]
/** * 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<List<Integer>> zigzagLevelOrder(TreeNode root) { List<List<Integer>> res = new ArrayList<>(); if(root == null) return res; Queue<TreeNode> treeQueue = new ArrayDeque<>(); treeQueue.offer(root); Stack<Integer> stack = new Stack<>(); Queue<Integer> level = new ArrayDeque<>(); Queue<Integer> queue = new ArrayDeque<>(); int depth = 1; level.offer(depth); int lastLevel = 1; while(!treeQueue.isEmpty()){ TreeNode current = treeQueue.poll(); int currentLevel = level.poll(); if(currentLevel != lastLevel){ List<Integer> list = new ArrayList<>(); if(lastLevel % 2 == 0){ while(!stack.isEmpty()){ list.add(stack.pop()); } res.add(list); }else{ while(!queue.isEmpty()){ list.add(queue.poll()); } res.add(list); } } if(currentLevel % 2 == 0){ stack.push(current.val); }else{ queue.offer(current.val); } lastLevel = currentLevel; if(current.left != null){ treeQueue.offer(current.left); level.offer(currentLevel+1); } if(current.right != null){ treeQueue.offer(current.right); level.offer(currentLevel+1); } } List<Integer> list = new ArrayList<>(); if(lastLevel % 2 == 0){ while(!stack.isEmpty()){ list.add(stack.pop()); } res.add(list); }else{ while(!queue.isEmpty()){ list.add(queue.poll()); } res.add(list); } return res; } }
相关文章推荐
- 103. Binary Tree Zigzag Level Order Traversal
- [LeetCode]Binary Tree Zigzag Level Order Traversal
- LeetCode Binary Tree Zigzag Level Order Traversal
- binary-tree-zigzag-level-order-traversal
- LeetCode OJ:Binary Tree Zigzag Level Order Traversal
- Binary Tree Zigzag Level Order Traversal
- leetcode - Binary Tree Zigzag Level Order Traversal
- Binary Tree Zigzag Level Order Traversal
- leetcode第一刷_Binary Tree Zigzag Level Order Traversal
- FTPrep, 103 Binary Tree Zigzag Level Order Traversal
- 103. Binary Tree Zigzag Level Order Traversal
- [leetCode]Binary Tree Zigzag Level Order Traversal
- LeetCode-Binary Tree Zigzag Level Order Traversal-二叉树锯齿层次遍历-二叉树DFS层次遍历
- 103. Binary Tree Zigzag Level Order Traversal
- Binary Tree Zigzag Level Order Traversal
- Binary Tree Zigzag Level Order Traversal
- LeetCode--Binary Tree Zigzag Level Order Traversal
- LeetCode(103) Binary Tree Zigzag Level Order Traversal
- LeetCode | Binary Tree Zigzag Level Order Traversal
- [LeetCode-15]Binary Tree Zigzag Level Order Traversal