102. 二叉树的层序遍历 --力扣 --JAVA

简介: 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。

 题目

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

解题思路

    1. 利用Map以层级作为key进行初始数据存储,最后再遍历Map存储结果到List中;
    2. 添加当前节点到当前层级,通过递归传递层级到下一层即当前节点的左右子树;

    代码展示

    class Solution {
        private Map<Integer,List<Integer>> levelMap = new TreeMap<>();
        public List<List<Integer>> levelOrder(TreeNode root) {
            getLevel( root, 0);
            List<List<Integer>> ans = new ArrayList<>();
            for (List<Integer> list : levelMap.values()){
                ans.add(list);
            }
            return ans;
        }
        /**
         * 获取当前层的值
         * @param root  当前层的节点
         * @param level 当前层级
         */
        private void getLevel( TreeNode root, int level){
            if(root == null){
                return;
            }
            List<Integer> list = levelMap.getOrDefault( level, new ArrayList<>());
            list.add(root.val);
            levelMap.put( level, list);
            level++;
            getLevel( root.left, level);
            getLevel( root.right, level);
        }
    }

    image.gif


    目录
    相关文章
    |
    1月前
    【LeetCode 31】104.二叉树的最大深度
    【LeetCode 31】104.二叉树的最大深度
    19 2
    |
    1月前
    【LeetCode 29】226.反转二叉树
    【LeetCode 29】226.反转二叉树
    15 2
    |
    1月前
    【LeetCode 28】102.二叉树的层序遍历
    【LeetCode 28】102.二叉树的层序遍历
    15 2
    |
    21天前
    |
    算法 Java
    JAVA 二叉树面试题
    JAVA 二叉树面试题
    14 0
    |
    1月前
    【LeetCode 43】236.二叉树的最近公共祖先
    【LeetCode 43】236.二叉树的最近公共祖先
    18 0
    |
    1月前
    【LeetCode 38】617.合并二叉树
    【LeetCode 38】617.合并二叉树
    14 0
    |
    1月前
    【LeetCode 37】106.从中序与后序遍历构造二叉树
    【LeetCode 37】106.从中序与后序遍历构造二叉树
    16 0
    |
    1月前
    【LeetCode 34】257.二叉树的所有路径
    【LeetCode 34】257.二叉树的所有路径
    12 0
    |
    1月前
    【LeetCode 32】111.二叉树的最小深度
    【LeetCode 32】111.二叉树的最小深度
    16 0
    |
    2月前
    |
    Unix Shell Linux
    LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
    本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
    LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行