【力扣题解】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万字详解】

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

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

谢谢!

相关推荐
fat house cat_3 小时前
【netty】基于主从Reactor多线程模型|如何解决粘包拆包问题|零拷贝
java·服务器·网络·netty
.格子衫.3 小时前
022数据结构之树状数组——算法备赛
数据结构·算法·1024程序员节
黑科技Python3 小时前
生活中的“小智慧”——认识算法
学习·算法·生活
Yupureki3 小时前
从零开始的C++学习生活 16:C++11新特性全解析
c语言·数据结构·c++·学习·visual studio
青云交3 小时前
Java 大视界 -- Java 大数据在智能教育学习社区互动模式创新与用户活跃度提升中的应用(426)
java·大数据·学习·flink 实时计算·智能教育社区·互动模式创新·用户活跃度
神奇的海马体3 小时前
Tomcat隐藏版本号
java·tomcat
拜见老天師3 小时前
使用mybatis-plus,实现将排序时,字段值为NULL的数据排在最后
java·mybatis
sali-tec4 小时前
C# 基于halcon的视觉工作流-章52-生成标定板
开发语言·图像处理·人工智能·算法·计算机视觉
IT古董4 小时前
【第五章:计算机视觉-项目实战之推荐/广告系统】2.粗排算法-(4)粗排算法模型多目标算法(Multi Task Learning)及目标融合
人工智能·算法·1024程序员节
熬了夜的程序员4 小时前
【LeetCode】89. 格雷编码
算法·leetcode·链表·职场和发展·矩阵