news 2026/4/18 3:38:29

力扣刷题之102、二叉树的层序遍历

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
力扣刷题之102、二叉树的层序遍历

力扣刷题之102、二叉树的层序遍历

题目难度:中等
标签:树、广度优先搜索(BFS)、二叉树


题目描述

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

示例:

输入root = [3,9,20,null,null,15,7]
输出[[3],[9,20],[15,7]]

输入root = [1]
输出:``

输入root = []
输出[]


解题思路

层序遍历是广度优先搜索(BFS)在二叉树中的典型应用。与深度优先搜索(DFS)不同,BFS 按“层”处理节点,非常适合用队列(Queue)来实现。

核心思想:

  • 使用队列存储待访问的节点。
  • 每次处理当前层的所有节点(通过记录当前队列大小)。
  • 将当前层节点值存入一个列表,再将该列表加入最终结果。
  • 同时把下一层的左右子节点加入队列,为下一轮做准备。

关键点:不能直接用queue.size()作为 for 循环条件,因为队列在循环中会动态变化。必须提前保存当前层的节点数量!


代码实现(Java)

/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */classSolution{publicList<List<Integer>>levelOrder(TreeNoderoot){//创建结果列表,用于存储每一次的节点值List<List<Integer>>result=newArrayList<>();//边界情况:如果根节点为空,直接返回空列表if(root==null){returnresult;}//创建队列,用于BFS的起点Queue<TreeNode>queue=newLinkedList<>();queue.offer(root);//当队列不为空时,继续处理while(!queue.isEmpty()){//获取当前层的节点数量intlevelsize=queue.size();//创建列表存储当前层的所有节点值List<Integer>current=newArrayList<>();//处理当前层的所有节点for(inti=0;i<levelsize;i++){//从队列头部取出一个节点TreeNodeNode=queue.poll();//将当前节点的值添加到当前层的结果列表current.add(Node.val);//如果左子节点存在,将其加入到队列中if(Node.left!=null){queue.offer(Node.left);}//如果右子节点存在,将其加入到队列中if(Node.right!=null){queue.offer(Node.right);}}//将当前层的结果添加到最终结果列表中result.add(current);}//返回层序遍历的结果returnresult;}}

复杂度分析

  • 时间复杂度O(n)
    每个节点被访问一次,n 为树中节点总数。

  • 空间复杂度O(n)
    最坏情况下(完全二叉树),队列中最多存储约 n/2 个节点(最后一层)。


总结

层序遍历是树类问题的基础技能,掌握 BFS + 队列的写法,能轻松应对一大类“按层处理”的题目。所以要记住:先记录当前层大小,再循环处理,这是避免逻辑错误的关键!


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 3:29:02

LobeChat是否支持表情符号?情感表达丰富度评估

LobeChat 是否支持表情符号&#xff1f;一场关于情感表达的技术深潜 在智能对话系统日益普及的今天&#xff0c;用户早已不再满足于“提问—回答”这种机械式的交互。我们希望 AI 能读懂语气里的犹豫&#xff0c;回应中的调侃&#xff0c;甚至能从一句“嗯……&#x1f914;”里…

作者头像 李华
网站建设 2026/4/18 1:35:19

周报 | 25.12.8-25.12.14文章汇总

为了更好地整理文章和发表接下来的文章&#xff0c;以后每周都汇总一份周报。 集智书童 | 特征匹配迭代训练 | EM-DETR实现医学图像检测三大模态性能突破-CSDN博客 江大白 | 多模态训推标注一体化平台 X-AnyLabeling 3.0 正式发布: Qwen3-VL、SAM3、远程推理全升级&#xff0…

作者头像 李华
网站建设 2026/4/16 17:48:33

在线简历工具怎么选?整理了 10 个常用网站,适合毕业生快速上手

简历制作工具这几年发展得很快。 相比以前反复折腾 Word、调整格式&#xff0c;现在用在线生成的方式&#xff0c;内容整理和排版成本都低了很多。 不管是第一次做简历&#xff0c;还是毕业季需要频繁更新版本&#xff0c;这类工具至少能解决三个问题&#xff1a; 不知道简历…

作者头像 李华
网站建设 2026/4/17 16:18:34

AutoGPT如何防范Prompt注入攻击?输入净化策略

AutoGPT如何防范Prompt注入攻击&#xff1f;输入净化策略 在当前AI代理系统快速演进的背景下&#xff0c;AutoGPT类自主智能体正从“辅助工具”向“任务执行者”角色转变。它们不再只是回答问题&#xff0c;而是能主动拆解目标、调用搜索引擎、读写文件、运行代码&#xff0c;甚…

作者头像 李华
网站建设 2026/4/10 0:29:53

Qwen3-VL-30B视频时序感知技术揭秘:自动驾驶场景下的落地路径

Qwen3-VL-30B视频时序感知技术揭秘&#xff1a;自动驾驶场景下的落地路径 在智能驾驶系统不断进化的今天&#xff0c;一个核心挑战正日益凸显&#xff1a;车辆能否真正“理解”周围世界的动态变化&#xff0c;而不仅仅是“检测”到物体的存在&#xff1f;当前多数ADAS方案依赖于…

作者头像 李华
网站建设 2026/4/15 13:27:46

Transformers库中加载Qwen3-VL-30B模型的避坑指南

Transformers库中加载Qwen3-VL-30B模型的避坑指南 在构建智能文档分析系统或视觉问答应用时&#xff0c;你是否曾遇到这样的场景&#xff1a;满怀期待地调用AutoModel.from_pretrained()加载一个号称“中文最强”的多模态大模型&#xff0c;结果却卡在第一步——显存爆炸、权重…

作者头像 李华