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


    目录
    相关文章
    |
    2天前
    【Leetcode 2583】二叉树中的第K大层和 —— 优先队列 + BFS
    解题思路: - 使用队列保存节点,按层序依次保存该层节点 - 使用优先队列保存每层节点值的总和,最后剔除前k个大数即可得到
    |
    5天前
    |
    Java
    LeetCode题解-逆波兰表达式求值-Java
    逆波兰表达式求值-Java
    6 0
    |
    5天前
    |
    Java
    |
    5天前
    |
    Java
    |
    5天前
    |
    Java
    LeetCode题解-二叉搜索树中第K小的元素-Java
    LeetCode题解-二叉搜索树中第K小的元素-Java
    6 0
    |
    5天前
    |
    Java
    |
    5天前
    |
    Java
    LeetCode题解- 两两交换链表中的节点-Java
    两两交换链表中的节点-Java
    7 0
    |
    5天前
    |
    Java
    LeetCode题解-合并K个有序数组-Java
    合并K个有序数组-Java
    5 0
    |
    5天前
    |
    Java
    |
    5天前
    |
    Java
    LeetCode-电话号码的字母组合-Java
    电话号码的字母组合-Java
    6 0

    相关产品

  1. 云迁移中心