Binary Tree ZigZag Level Order Traversal leetcode java
题目:
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]
]
题解:
这题同样是BFS,用一个flag记录是否需要reverse,如果需要的话就把reverse的结果存储即可。
代码如下:
1 public ArrayList<ArrayList<Integer>> zigzagLevelOrder(TreeNode root) {
2 ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();
3
4 if(root==null)
5 return res;
6
7 LinkedList<TreeNode> queue = new LinkedList<TreeNode>();
8 queue.add(root);
9
int num = 0;
boolean reverse = false;//a flag
while(!queue.isEmpty()){
num = queue.size();
ArrayList<Integer> levelres = new ArrayList<Integer>();
for(int i = 0; i<num; i++){
TreeNode node = queue.poll();
levelres.add(node.val);
if(node.left!=null)
queue.add(node.left);
if(node.right!=null)
queue.add(node.right);
}
if(reverse){
Collections.reverse(levelres);
reverse = false;
}else{
reverse = true;
}
res.add(levelres);
}
return res;
}
1 public ArrayList<ArrayList<Integer>> zigzagLevelOrder(TreeNode root) {
2 ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();
3 if(root == null)
4 return res;
5
6 LinkedList<TreeNode> queue = new LinkedList<TreeNode>();
7 queue.add(root);
8 Boolean reverse = false;
9 int nextlevel = 0;
int currlevel = 1;
ArrayList<Integer> tmp = new ArrayList<Integer>();
while(!queue.isEmpty()){
TreeNode t = queue.poll();
tmp.add(t.val);
currlevel--;
if(t.left!=null){
queue.add(t.left);
nextlevel++;
}
if(t.right!=null){
queue.add(t.right);
nextlevel++;
}
if(currlevel == 0){
currlevel = nextlevel;
nextlevel = 0;
if(reverse){
Collections.reverse(tmp);
reverse = false;
}else{
reverse = true;
}
res.add(tmp);
tmp = new ArrayList<Integer>();
}
}
return res;
}
Binary Tree ZigZag Level Order Traversal leetcode java的更多相关文章
- Binary Tree Zigzag Level Order Traversal (LeetCode) 层序遍历二叉树
题目描述: Binary Tree Zigzag Level Order Traversal AC Rate: 399/1474 My Submissions Given a binary tree, ...
- Binary Tree Zigzag Level Order Traversal [LeetCode]
Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to ...
- Binary Tree Zigzag Level Order Traversal——LeetCode
Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to ...
- 【LeetCode】 Binary Tree Zigzag Level Order Traversal 解题报告
Binary Tree Zigzag Level Order Traversal [LeetCode] https://leetcode.com/problems/binary-tree-zigzag ...
- LeetCode 103. 二叉树的锯齿形层次遍历(Binary Tree Zigzag Level Order Traversal)
103. 二叉树的锯齿形层次遍历 103. Binary Tree Zigzag Level Order Traversal 题目描述 给定一个二叉树,返回其节点值的锯齿形层次遍历.(即先从左往右,再 ...
- LeetCode解题报告—— Unique Binary Search Trees & Binary Tree Level Order Traversal & Binary Tree Zigzag Level Order Traversal
1. Unique Binary Search Trees Given n, how many structurally unique BST's (binary search trees) that ...
- leetCode :103. Binary Tree Zigzag Level Order Traversal (swift) 二叉树Z字形层次遍历
// 103. Binary Tree Zigzag Level Order Traversal // https://leetcode.com/problems/binary-tree-zigzag ...
- 【leetcode】Binary Tree Zigzag Level Order Traversal
Binary Tree Zigzag Level Order Traversal Given a binary tree, return the zigzag level order traversa ...
- 【LeetCode】103. Binary Tree Zigzag Level Order Traversal
Binary Tree Zigzag Level Order Traversal Given a binary tree, return the zigzag level order traversa ...
随机推荐
- GPU安装
安装驱动 https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&target_d ...
- android activity 启动模式
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 1,标准的, 2,单个 顶部 3,单个 任务 4,单个 实例 标准的 就是 每启动一次这 ...
- Codeforces.835E.The penguin's game(交互 按位统计 二分)
题目链接 \(Description\) 有一个长为\(n\)的序列,其中有两个元素为\(y\),其余全为\(x\).你可以进行\(19\)次询问,每次询问你给出一个下标集合,交互库会返回这些元素的异 ...
- POP3_收取QQ邮箱邮件的问题
今天纠结了一天的时间,使用pop3协议收取qq邮箱中邮件时,因为一个特别坑爹的问题重新写n次,最后发现是因为qq邮箱设置了独立邮箱密码,必须的用独立邮箱密码登陆才行,/(ㄒoㄒ)/~~!!!! 但今天 ...
- Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable(转)
最近需要做些接口服务,服务协议定为JSON,为了整合在Spring中,一开始确实费了很大的劲,经朋友提醒才发现,SpringMVC已经强悍到如此地步,佩服! 相关参考: Spring 注解学习手札(一 ...
- Programmed Adjustable Power
Programmed Adjustable Power I just explored an easy scheme to design a high precision programmed adj ...
- swddude -- A SWD programmer for ARM Cortex microcontrollers.
Introducing swddude I love the ARM Cortex-M series of microcontrollers. The sheer computational po ...
- 虫趣:BAD POOL CALLER (par1: 0x20)
[作者:张佩] [原文:http://www.yiiyee.cn/Blog/0x19-1/] 内核在管理内存的时候,为了提高内存使用效率,对于小片内存的申请(小于一个PAGE大小),都是通过内存池来操 ...
- golang-bcc-bpf-function-tracing
http://www.brendangregg.com/blog/2017-01-31/golang-bcc-bpf-function-tracing.html
- 快递 API接口
http://www.kuaidi.com/openapi.html http://www.kuaidi100.com/ http://www.cnblogs.com/sususu3/p/577642 ...