分布式调度 全局重载运算符 namespace DHCP qt email grunt vue钩子函数 后台管理系统模板 swift视频教程 mysql统计数量 cad正在执行命令 河南普通话报名入口 python中len函数 java基础 java入门级教程 java集合 java实例方法 java求阶乘 java创建文件夹 beatedit 音乐剪辑器下载 梦幻手游助手 pmbok第六版 python数组赋值 dos系统下载 极限防守图 淘宝店铺采集 视频字幕制作软件 php随机数 0000008e 软碟通u盘装系统教程 php完全自学手册 日文游戏乱码转换工具 xfce4 淘宝店铺会员 劳动节称号 快剪辑去水印 qq拼音输入法官网 maya2013
当前位置: 首页 > 学习教程  > 编程语言

力扣 剑指 Offer 32 - III. 从上到下打印二叉树 III 中等

2020/7/24 9:52:45 文章标签:

题目

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

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

    3
   / \
  9  20
    /  \
   15   7
返回其层次遍历结果:

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

提示:节点总数 <= 1000

题解

增加一个标记判断是否需要翻转。

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public List<List<Integer>> levelOrder(TreeNode root) {
        List<List<Integer>> res = new ArrayList<>();
        if(root == null) return res;
        Queue<TreeNode> queue = new LinkedList<>();
        queue.offer(root);
        int flag = 0;
        while(!queue.isEmpty()){
            int size = queue.size();
            List<Integer> tmp = new ArrayList<>();
            for(int i = 0; i < size; i++){
                TreeNode node = queue.poll();
                tmp.add(node.val);
                if(node.left != null) queue.offer(node.left);
                if(node.right != null) queue.offer(node.right);
            }
            if(flag == 0){
                flag = 1;
                res.add(tmp);
            }
            else{
                flag = 0;
                Collections.reverse(tmp);
                res.add(tmp);
            }
        }
        return res;
    }
}

 


本文链接: http://www.dtmao.cc/news_show_50149.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?