zoukankan      html  css  js  c++  java
  • 【剑指offer】32-3 从上到下打印二叉树 III

    32-3 从上到下打印二叉树 III

    面试题32 - III. 从上到下打印二叉树 III

    难度中等15

    请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。

    例如:

    给定二叉树: [3,9,20,null,null,15,7],

        3
       / 
      9  20
        /  
       15   7
    

    返回其层次遍历结果:

    [
      [3],
      [20,9],
      [15,7]
    ]
    

    思路:其实和前边的相同 添加一个标志位 第一次不需要反转,第二次需要反转,第三次不需要反转,依序就可以反转。

    public List<List<Integer>> levelOrder(TreeNode root) {
            List<List<Integer>> result = new ArrayList<>();
            Queue<TreeNode> queue = new LinkedList<>();
            queue.add(root);
            boolean reverse = false;//设置是否需要反转
            while(!queue.isEmpty()){
                List<Integer> list = new ArrayList<>();
                int cnt = queue.size();
                while(cnt-- > 0){
                    TreeNode t = queue.poll();
                    if(t == null){
                        continue;
                    }
                    list.add(t.val);
                    queue.add(t.left);
                    queue.add(t.right);
                }
                if(reverse){
                    Collections.reverse(list);
                }
                reverse = !reverse;
                if(list.size() != 0)
                    result.add(list);
            }
            return result;
        }
    
  • 相关阅读:
    css 正方体
    鼠标放上去,不同的cursor光标类型
    文件上传用到的函数 20150205
    PHP常用正则表达式汇总
    代码练习之 登陆 PHP会话控制 session cookie
    正则表达式全部符号解释
    字典转模型
    Day11 TableView
    Day10
    Day9
  • 原文地址:https://www.cnblogs.com/qxlxi/p/12860635.html
Copyright © 2011-2022 走看看