Binary Tree Zigzag Level Order Traversal
来源:互联网 发布:nginx tcp 域名重定向 编辑:程序博客网 时间:2024/06/06 02:42
题目:
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.
分析:
层次遍历稍微变了下形状而已
用一个变量记录每层的节点个数就ok了
参考代码:
http://blog.csdn.net/linhuanmars/article/details/24509105
这里LZ用了两个栈!
/** * 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<List<Integer>>(); if(root==null) return res; LinkedList<TreeNode> stack = new LinkedList<TreeNode>(); int level=1; ArrayList<Integer> item = new ArrayList<Integer>(); item.add(root.val); res.add(item); stack.push(root); while(!stack.isEmpty()) { LinkedList<TreeNode> newStack = new LinkedList<TreeNode>(); item = new ArrayList<Integer>(); while(!stack.isEmpty()) { TreeNode node = stack.pop(); if(level%2==0) { if(node.left!=null) { newStack.push(node.left); item.add(node.left.val); } if(node.right!=null) { newStack.push(node.right); item.add(node.right.val); } } else { if(node.right!=null) { newStack.push(node.right); item.add(node.right.val); } if(node.left!=null) { newStack.push(node.left); item.add(node.left.val); } } } level++; if(item.size()>0) res.add(item); stack = newStack; } 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
- programing studying notes no.1--用processing描述球体碰撞
- Maven详解之仓库------本地仓库、远程仓库
- HDU 5492 Find a path
- 在Win32上用VC编译nginx
- Maven安装及与Eclipse集成
- Binary Tree Zigzag Level Order Traversal
- HDU 1196 Lowest Bit(水~)
- 条款20:宁以pass-by-reference-to-const替换pass-by-value
- Cannot open the disk 'F:\vmvare2\shared40' or one of the snapshot disks it depends on.
- Majority Element II
- ubuntu 启动 svn open db/txn-current-lock - permission denied
- android中的HttpClient,Delete请求
- HDU 1619 Unidirectional TSP(dp)
- 通过安装钩子改变MessageBox外观,