• 二叉树的层次遍历


    问题描述:

    给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。

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

        3
       / 
      9  20
        /  
       15   7
    

    返回其层次遍历结果:

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

    解题思路:

    定义变量list,List<List<Integer>> list = new LinkedList<List<Integer>>();

    list用于存储二叉树的每一层及该层对应的节点值。

    对于二叉树中每个节点node,需要得到节点所在的层数level。

    根据节点所在层数level,将节点值添加至list中相应的层数。

    实现代码如下:

        // list存储每层的遍历结果
        // list包含树的每个层,每一层又包含该层各个节点的值
        private static List<List<Integer>> list = new LinkedList<List<Integer>>();
    
        private static void test(TreeNode node, int level) {
    
            if (node == null) return;
    
            // 若list中已包含节点node的层数level,则直接将node的值添加至该层
            if (level < list.size()) list.get(level).add(node.val);
            // 若list中没有节点node的层数level,list添加新层,并将节点node的值添加至该层。
            else {
                list.add(new LinkedList<Integer>());
                list.get(level).add(node.val);
            }
    
            // node的左右子节点,其子节点层数比其多1
            test(node.left, level+1);
            test(node.right, level+1);
        }
    
        public static List<List<Integer>> levelOrder(TreeNode root) {
            test(root, 0);
            return list;
        }
  • 相关阅读:
    bzoj2599
    在Linux下配置jdk的环境变量
    liunx 命令大全
    Liunx下如何使用kettle
    Liunx 解压篇
    Linux下安装MySQL-5.7
    Linux文件权限查看及修改命令chmod,chown
    spring 驱动模式
    Struts2标签之Checkbox
    spring 注解的优点缺点
  • 原文地址:https://www.cnblogs.com/deltadeblog/p/9291099.html
Copyright © 2020-2023  润新知