Binary Tree Zigzag Level Order Traversal
来源:互联网 发布:开淘宝店怎么寻找货源 编辑:程序博客网 时间:2024/06/05 11:08
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,#,#,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.
Analysis: It is similar as the binary tree level order traversal, i.e., use BFS. However, the frontier and next here are more suitable for using Stack instead of Queue. We just use a boolean variable as the flag to determine the order to put into the stack (left to right, or, say, right to left).
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public ArrayList<ArrayList<Integer>> zigzagLevelOrder(TreeNode root) { ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>(); if(root==null) return res; boolean leftToRight = false; Stack<TreeNode> frontier = new Stack<TreeNode>(); frontier.push(root); while(!frontier.isEmpty()) { Stack<TreeNode> next = new Stack<TreeNode>(); ArrayList<Integer> tem = new ArrayList<Integer>(); while(!frontier.isEmpty()) { TreeNode current = frontier.pop(); tem.add(current.val); if(!leftToRight) { // right to left traversal if(current.left!=null) next.push(current.left); if(current.right!=null) next.push(current.right); } else { // left to right traversal if(current.right!=null) next.push(current.right); if(current.left!=null) next.push(current.left); } } res.add(tem); leftToRight = !leftToRight; frontier = next; } return res; }}
0 0
- 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
- 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
- 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
- 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
- Binary Tree Zigzag Level Order Traversal
- Binary Tree Zigzag Level Order Traversal
- SSH框架 dataSource c3p0连接池配置说明
- 美好只是个幻影,我们总是尝试着把生活中所有美好的一切
- 编译 hadoop 2.2.0
- yarn hadoop mapreduce 2.0 编译
- XML基础
- Binary Tree Zigzag Level Order Traversal
- 九度OJ 1205 N阶楼梯上楼问题 -- 动态规划(递推求解)
- 中国主席对日本说出最狠话日本国内炸开锅
- style、currentStyle、runtimeStyle详解
- JBPM具体应用之流程变量与任务变量
- IE6 WEB开发调试插件:IE Developer Toolbar
- 老兵贺苏-30驱日机:是我们的作风(1)
- C#基础复习
- XML的四种解析方式之DOM