题目

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的更多相关文章

  1. Binary Tree Zigzag Level Order Traversal (LeetCode) 层序遍历二叉树

    题目描述: Binary Tree Zigzag Level Order Traversal AC Rate: 399/1474 My Submissions Given a binary tree, ...

  2. 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 ...

  3. 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 ...

  4. 【LeetCode】 Binary Tree Zigzag Level Order Traversal 解题报告

    Binary Tree Zigzag Level Order Traversal [LeetCode] https://leetcode.com/problems/binary-tree-zigzag ...

  5. LeetCode 103. 二叉树的锯齿形层次遍历(Binary Tree Zigzag Level Order Traversal)

    103. 二叉树的锯齿形层次遍历 103. Binary Tree Zigzag Level Order Traversal 题目描述 给定一个二叉树,返回其节点值的锯齿形层次遍历.(即先从左往右,再 ...

  6. 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 ...

  7. leetCode :103. Binary Tree Zigzag Level Order Traversal (swift) 二叉树Z字形层次遍历

    // 103. Binary Tree Zigzag Level Order Traversal // https://leetcode.com/problems/binary-tree-zigzag ...

  8. 【leetcode】Binary Tree Zigzag Level Order Traversal

    Binary Tree Zigzag Level Order Traversal Given a binary tree, return the zigzag level order traversa ...

  9. 【LeetCode】103. Binary Tree Zigzag Level Order Traversal

    Binary Tree Zigzag Level Order Traversal Given a binary tree, return the zigzag level order traversa ...

随机推荐

  1. GPU安装

    安装驱动 https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&target_d ...

  2. android activity 启动模式

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 1,标准的, 2,单个 顶部 3,单个 任务 4,单个 实例 标准的 就是 每启动一次这 ...

  3. Codeforces.835E.The penguin's game(交互 按位统计 二分)

    题目链接 \(Description\) 有一个长为\(n\)的序列,其中有两个元素为\(y\),其余全为\(x\).你可以进行\(19\)次询问,每次询问你给出一个下标集合,交互库会返回这些元素的异 ...

  4. POP3_收取QQ邮箱邮件的问题

    今天纠结了一天的时间,使用pop3协议收取qq邮箱中邮件时,因为一个特别坑爹的问题重新写n次,最后发现是因为qq邮箱设置了独立邮箱密码,必须的用独立邮箱密码登陆才行,/(ㄒoㄒ)/~~!!!! 但今天 ...

  5. Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable(转)

    最近需要做些接口服务,服务协议定为JSON,为了整合在Spring中,一开始确实费了很大的劲,经朋友提醒才发现,SpringMVC已经强悍到如此地步,佩服! 相关参考: Spring 注解学习手札(一 ...

  6. Programmed Adjustable Power

    Programmed Adjustable Power I just explored an easy scheme to design a high precision programmed adj ...

  7. swddude -- A SWD programmer for ARM Cortex microcontrollers.

    Introducing swddude I love the ARM Cortex-M series of microcontrollers.   The sheer computational po ...

  8. 虫趣:BAD POOL CALLER (par1: 0x20)

    [作者:张佩] [原文:http://www.yiiyee.cn/Blog/0x19-1/] 内核在管理内存的时候,为了提高内存使用效率,对于小片内存的申请(小于一个PAGE大小),都是通过内存池来操 ...

  9. golang-bcc-bpf-function-tracing

    http://www.brendangregg.com/blog/2017-01-31/golang-bcc-bpf-function-tracing.html

  10. 快递 API接口

    http://www.kuaidi.com/openapi.html http://www.kuaidi100.com/ http://www.cnblogs.com/sususu3/p/577642 ...