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

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

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

谢谢!

相关推荐
m沐沐2 小时前
【深度学习】YOLOv2目标检测算法——改进点、网络结构与聚类先验框解析
人工智能·pytorch·深度学习·算法·yolo·目标检测·transformer
不会就选b2 小时前
算法日常・每日刷题--<链表>3
数据结构·算法·链表
geovindu2 小时前
go: Iterative Algorithms
开发语言·后端·算法·golang·迭代算法
前端工作日常4 小时前
我学习到的Java中domain和dto区别
java·后端
码农学院4 小时前
基于Spring Boot的跨境电商多语言订单管理系统架构设计
java·大数据·spring boot
稚南城才子,乌衣巷风流4 小时前
块状链表:数据结构详解与实现
数据结构·链表
Zachery Pole4 小时前
CCF-CSP备战NO.7【队列】
算法
闪电悠米5 小时前
力扣hot100-48.旋转图像-转置翻转详解
算法·leetcode·职场和发展
技术小结-李爽5 小时前
【工具】pom文件的<packaging>
java·maven
满天星83035775 小时前
【算法】最长递增子序列(三种解法)
算法