【力扣题解】P102-二叉树的层序遍历-Java题解

👨‍💻博客主页:@花无缺

欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

本文由 花无缺 原创

收录于专栏 【力扣题解】


文章目录


【力扣题解】P102-二叉树的层序遍历-Java题解

P102.二叉树的层序遍历

🌏题目描述

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

示例 1:

复制代码
输入:root = [3,9,20,null,null,15,7]
输出:[[3],[9,20],[15,7]]

示例 2:

复制代码
输入:root = [1]
输出:[[1]]

示例 3:

复制代码
输入:root = []
输出:[]

提示:

  • 树中节点数目在范围 [0, 2000]
  • -1000 <= Node.val <= 1000

💡题解

迭代法

java 复制代码
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);
    while (!queue.isEmpty()) {
        List<Integer> list = new ArrayList<>();
        // 获取当前层的节点数
        int length = queue.size();
        // 遍历当前层, 并将所有节点值加入 list 中
        while (length > 0) {
            // 队头节点出队
            TreeNode node = queue.poll();
            list.add(node.val);
            // 出队之后左子树节点入队
            if (node.left != null) {
                queue.offer(node.left);
            }
            // 右子树节点入队
            if (node.right != null) {
                queue.offer(node.right);
            }
            length--;
        }
        // 遍历完当前层后, 将当前层的所有节点值放入 res
        res.add(list);
    }
    return res;
}

🌏总结

二叉树的层序遍历是一个和前中后序遍历同样重要的一种遍历方式,通过层序遍历我们可以很方便的解决很多关于二叉树的问题。那么我们怎么实现二叉树的层序遍历呢,答案是借助队列,借助队列先进先出的特性我们可以将二叉树的每一层的节点依次进队,然后出队时将其左右子树再进队,这样就可以达到对二叉树进行每一层单独遍历的效果。

作者:花无缺(huawuque404.com)


🌸欢迎关注我的博客:花无缺-每一个不曾起舞的日子都是对生命的辜负~

🍻一起进步-刷题专栏:【力扣题解】

🥇往期精彩好文:

📢【CSS选择器全解指南】

📢【HTML万字详解】

你们的点赞👍 收藏⭐ 留言📝 关注✅

是我持续创作,输出优质内容的最大动力!

谢谢!

相关推荐
llwszx1 小时前
深入理解Java锁原理(一):偏向锁的设计原理与性能优化
java·spring··偏向锁
云泽野1 小时前
【Java|集合类】list遍历的6种方式
java·python·list
二进制person2 小时前
Java SE--方法的使用
java·开发语言·算法
OneQ6662 小时前
C++讲解---创建日期类
开发语言·c++·算法
JoJo_Way2 小时前
LeetCode三数之和-js题解
javascript·算法·leetcode
小阳拱白菜3 小时前
java异常学习
java
.30-06Springfield3 小时前
人工智能概念之七:集成学习思想(Bagging、Boosting、Stacking)
人工智能·算法·机器学习·集成学习
FrankYoou4 小时前
Jenkins 与 GitLab CI/CD 的核心对比
java·docker
麦兜*4 小时前
Spring Boot启动优化7板斧(延迟初始化、组件扫描精准打击、JVM参数调优):砍掉70%启动时间的魔鬼实践
java·jvm·spring boot·后端·spring·spring cloud·系统架构
KK溜了溜了5 小时前
JAVA-springboot 整合Redis
java·spring boot·redis