zoukankan      html  css  js  c++  java
  • 力扣No.102 二叉树的层次遍历

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

    示例:
    二叉树:[3,9,20,null,null,15,7],

        3
       / 
      9  20
        /  
       15   7
    

    返回其层次遍历结果:

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

    这道题有两种解法:递归和遍历

    递归可以用level和list去存每层的节点,如果这层节点没有相应的list去存,就新建一个list,然后将当前节点存入。如果不为空,则取出当前层数的list,将新节点存入。

    List<List<Integer>> levels = new ArrayList<>();
        public List<List<Integer>> levelOrder(TreeNode root) {
            //判断传入的节点是否为空
            if (root == null) {
                return levels;
            }
            dfs(root, 0);
            return levels;
        }
        public void dfs(TreeNode root, int level) {
            //判断该层有没有list
            if (level == levels.size()) {
                levels.add(new ArrayList<>());
            }
            //存入节点
            levels.get(level).add(root.val);
            //如果左右子树不为空就存入
            if (root.left != null) {
                dfs(root.left, level + 1);
            }
            if (root.right != null) {
                dfs(root.right, level + 1);
            }
  • 相关阅读:
    计算机硬件知识整理
    cf689d ST表RMQ+二分
    hdu5289 ST表+二分
    hdu5443 ST表裸题:求区间最大
    poj3264 倍增法(ST表)裸题
    cf932d 树上倍增
    zoj3195 联通树上三个点的路径长
    hdu6107 倍增法st表
    hdu2586 lca倍增法
    poj1470 LCA倍增法
  • 原文地址:https://www.cnblogs.com/RS-Sakura/p/13958981.html
Copyright © 2011-2022 走看看