news 2026/7/15 12:13:01

力扣刷题之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/7/11 16:31:59

计算机硬件解剖:从拆解到性能优化

硬件解剖课技术文章大纲计算机硬件概述计算机硬件的基本组成硬件解剖的意义与目标常见硬件故障与维护需求主要硬件组件解析中央处理器&#xff08;CPU&#xff09;架构与工作原理性能参数&#xff08;核心数、主频、缓存&#xff09;散热解决方案&#xff08;风冷、水冷&#x…

作者头像 李华
网站建设 2026/7/14 20:04:17

基于STM32单片机盲人导航 导盲杖 智能拐杖系统 超声波测距 老人防丢 防摔到 跌倒检测报警 物联网控制系统 DIY 成品套件 DIY设计 实物+源程序+原理图+仿真+其它资料

当今社会科技发展迅速&#xff0c;带给人们生活的便利也越来越多&#xff0c;从物联网到大数据&#xff0c;从互联网到人工智能&#xff0c;所有的一切都是为了让人们体会到更加便捷。然而这些技术中却很少有为盲人服务的。中国是世界盲人最多的国家之一&#xff0c;目前约有50…

作者头像 李华
网站建设 2026/7/14 17:02:28

AutoGPT联网搜索功能如何启用?详细配置说明来了

AutoGPT联网搜索功能如何启用&#xff1f;详细配置说明来了 在当今信息爆炸的时代&#xff0c;人工智能正从“被动应答”走向“主动思考”。我们不再满足于让AI回答“今天天气怎么样”&#xff0c;而是期待它能独立完成“帮我制定一份基于当前气候趋势的户外旅行计划”这样的复…

作者头像 李华
网站建设 2026/7/14 0:28:03

企业内部智能客服新选择:基于LobeChat的定制化解决方案

企业内部智能客服新选择&#xff1a;基于LobeChat的定制化解决方案 在当今企业数字化转型加速的背景下&#xff0c;员工对高效、即时响应的服务需求日益增长。然而&#xff0c;传统的客服模式——无论是人工坐席还是依赖公共云AI助手——正暴露出越来越多的问题&#xff1a;响应…

作者头像 李华
网站建设 2026/7/15 8:54:33

AutoGPT镜像用户增长数据曝光:三个月突破10万下载

AutoGPT镜像用户增长数据曝光&#xff1a;三个月突破10万下载 在生成式AI浪潮席卷全球的今天&#xff0c;一个开源项目悄然刷新了社区热度记录——AutoGPT 镜像上线仅三个月&#xff0c;下载量便突破10万次。这不仅是一组数字的增长&#xff0c;更折射出开发者对“自主智能体”…

作者头像 李华
网站建设 2026/7/14 0:28:01

Python 1级编程考试模拟题库(5套精选)

目录Python 1级编程考试模拟题库&#xff08;5套精选&#xff09;卷1&#xff1a;基础语法与运算一、单选题 (每题2分&#xff0c;共50分)二、判断题 (每题2分&#xff0c;共20分)三、编程题 (每题15分&#xff0c;共30分)卷2&#xff1a;控制流程 (If/Else)一、单选题 (每题2分…

作者头像 李华