当前位置: 首页 > article >正文

LeetCode 102. 二叉树的层序遍历:从理论到实践的完整剖析

LeetCode 102. 二叉树的层序遍历从理论到实践的完整剖析问题描述给你二叉树的根节点root返回其节点值的层序遍历。即逐层地从左到右访问所有节点。示例 1输入root [3,9,20,null,null,15,7] 输出[[3],[9,20],[15,7]]示例 2输入root [1] 输出[[1]]示例 3输入root [] 输出[]算法原理核心思路层序遍历本质上是一种广度优先搜索BFS策略其核心在于使用队列数据结构来实现初始化一个队列并将根节点入队当队列不为空时执行以下操作记录当前队列的长度即当前层的节点数遍历当前层的所有节点出队一个节点将该节点的值加入结果集将该节点的左子节点如果存在入队将该节点的右子节点如果存在入队重复步骤 2直到队列为空复杂度分析时间复杂度O(n)其中 n 是二叉树的节点数。每个节点恰好入队和出队一次。空间复杂度O(n)最坏情况下队列中最多同时存在 O(n) 个节点例如当二叉树是满二叉树时最后一层的节点数约为 n/2。代码实现from collections import deque # Definition for a binary tree node. class TreeNode: def __init__(self, val0, leftNone, rightNone): self.val val self.left left self.right right class Solution: def levelOrder(self, root: Optional[TreeNode]) - List[List[int]]: if not root: return [] result [] queue deque([root]) while queue: level_size len(queue) level [] for _ in range(level_size): node queue.popleft() level.append(node.val) if node.left: queue.append(node.left) if node.right: queue.append(node.right) result.append(level) return result代码解析边界处理如果根节点为None直接返回空列表。初始化创建一个双端队列queue并将根节点入队。层序遍历当队列不为空时记录当前层的节点数level_size。创建一个空列表level用于存储当前层的节点值。遍历当前层的所有节点出队一个节点并将其值加入level。如果该节点有左子节点将左子节点入队。如果该节点有右子节点将右子节点入队。将level加入结果集result。返回结果遍历完成后返回result。实战技巧队列的选择在 Python 中我们使用collections.deque来实现队列因为它的popleft()操作是 O(1) 时间复杂度而使用列表的pop(0)操作是 O(n) 时间复杂度会导致整体时间复杂度退化。层的划分通过记录当前队列的长度我们可以精确地划分每一层的节点这是层序遍历的关键技巧。错误分析常见错误忘记处理空树当根节点为None时应直接返回空列表。层的划分错误如果不记录当前队列的长度而是直接遍历队列会导致无法正确划分每一层。队列操作错误在 Python 中使用列表的pop(0)操作会导致时间复杂度升高应使用deque。调试技巧在遍历过程中可以打印出当前队列的状态以便观察层序遍历的过程。对于复杂的二叉树可以画出树的结构手动模拟遍历过程验证算法的正确性。扩展思考变种问题二叉树的锯齿形层序遍历即先从左到右再从右到左交替进行。二叉树的层序遍历 II即从叶子节点所在层到根节点所在层逐层从左到右遍历。N 叉树的层序遍历将二叉树扩展为 N 叉树需要遍历每个节点的所有子节点。应用场景层序遍历在以下场景中有着广泛的应用树的广度优先搜索例如寻找树中的最短路径。树的序列化和反序列化例如将树转换为字符串或从字符串重建树。层次相关的问题例如寻找树的最大深度、最小深度等。个人实践感悟最近在准备转正答辩每天被各种算法题和合并冲突吓醒救命今天刷到这个经典的层序遍历问题突然想到刚实习时第一次遇到这个问题的场景。当时我还不知道用队列直接递归硬刚结果时间复杂度爆炸被mentor嘲笑了一整天麻了现在再看这个问题其实核心就是BFS的思想用队列来管理每一层的节点。这让我意识到算法的学习真的是一个循序渐进的过程从一无所知到熟练掌握需要不断地练习和总结。最后分享一个小技巧在面试中遇到树的遍历问题先想清楚是用DFS还是BFS然后选择合适的数据结构这样可以事半功倍。这就是大佬吗我也要成为这样的人输入输出示例输入输出示例 1输入root [3,9,20,null,null,15,7]输出[[3],[9,20],[15,7]]输入输出示例 2输入root [1]输出[[1]]输入输出示例 3输入root []输出[]结语层序遍历是二叉树中的经典算法掌握它不仅有助于解决相关的LeetCode问题也能帮助我们更好地理解树的结构和BFS的思想。希望这篇文章对大家有所帮助祝大家刷题愉快

相关文章:

LeetCode 102. 二叉树的层序遍历:从理论到实践的完整剖析

LeetCode 102. 二叉树的层序遍历:从理论到实践的完整剖析 问题描述 给你二叉树的根节点 root,返回其节点值的层序遍历。(即逐层地,从左到右访问所有节点)。 示例 1: 输入:root [3,9,20,null,nu…...

【2026最新】DirectX Repair修复工具,轻松解决 DirectX 报错、DLL 缺失与游戏闪退问题

游戏打不开、软件报错?别急着重装系统,可能是DirectX和DLL在作怪 “缺少d3dx9_43.dll”、“无法找到X3DAudio1_7.dll”、“应用程序无法启动。。。。。需要的是一个DirectX修复工具。 玩游戏或运行 3D 图形软件时,DirectX 报错是一类常见但又…...

电脑c盘变红了怎么清理?C盘清理工具与方法

电脑c盘变红了怎么清理?问题不难解决,关键是选对方法工具!下面介绍实用的清理C盘方法,便于你解决C盘变红的问题哦! 关于C盘清理工具,给大家安排一款针对C盘爆满的清理神器---Windows - Cleaner&#xff0c…...

系统提示msvcp140.dll丢失vcruntime140.dll丢失msvcr100.dll丢失mfc140u.dll丢失 怎么办?其他DLL错误修复

游戏文件打不开?DLL文件缺失?电脑崩溃?DirectX 轻松修复!游戏运行库修复文件缺失软件必备安装工具, 这个DirectX 运行库修复工具,一键完成dll缺失修复、解决99.99%程序故障、闪退、卡顿等常见问题,轻松解决…...

OpenClaw镜像体验:无需本地安装快速测试Qwen3.5-4B-Claude

OpenClaw镜像体验:无需本地安装快速测试Qwen3.5-4B-Claude 1. 为什么选择云端镜像方案 上周我在本地尝试部署OpenClaw时,被Node版本冲突和系统权限问题折磨了整整两天。当看到星图平台提供预装好的OpenClawQwen3.5-4B-Claude镜像时,立刻决定…...

OpenClaw内存优化:nanobot在4GB设备运行大型文档处理

OpenClaw内存优化:nanobot在4GB设备运行大型文档处理 1. 当4GB内存遇上100页PDF:一个不可能完成的任务? 上周我接到一个需求:需要在本地处理一份100页的技术文档PDF,提取关键信息并生成摘要。我的工作机是一台老旧的…...

从零到一实战:基于快马平台快速开发企业级jiyutrainer在线评测系统

今天想和大家分享一个很实用的开发经验——如何快速搭建一个企业级的在线编程评测系统。最近正好有个朋友想做一个类似jiyutrainer的编程练习平台,我就用InsCode(快马)平台试了试,效果出乎意料的好。 项目需求分析 首先明确我们需要实现的核心功能&#…...

Qwen3字幕系统Linux部署指南:从安装到性能调优

Qwen3字幕系统Linux部署指南:从安装到性能调优 为视频内容自动生成精准字幕的时代已经到来 还记得手动为视频添加字幕的痛苦经历吗?一遍遍听写、校对、调整时间轴,几分钟的视频往往需要花费数小时。现在,基于Qwen3的智能字幕系统可…...

告别繁琐配置:用快马ai一键生成win10系统openclaw自动化安装脚本原型

最近在折腾一个自动化安装OpenClaw工具的项目,发现Windows 10下的环境配置特别麻烦。作为一个经常需要快速验证工具链的开发者,我摸索出了一套用InsCode(快马)平台快速生成原型的方法,分享给大家。 环境检测模块的实现 最头疼的就是处理不同用…...

手柄优化指南:DS4Windows摇杆调校与硬件适配完全手册

手柄优化指南:DS4Windows摇杆调校与硬件适配完全手册 【免费下载链接】DS4Windows Like those other ds4tools, but sexier 项目地址: https://gitcode.com/gh_mirrors/ds/DS4Windows 在游戏体验中,手柄摇杆的精准控制直接影响操作手感与游戏表现…...

停车场、门禁、移动执法…聊聊C#车牌识别系统在不同业务场景下的‘调教’心得

停车场、门禁、移动执法:C#车牌识别系统的场景化调优实战 当车牌识别系统从实验室走向真实业务场景,开发者往往会发现一个残酷的现实:那些在标准测试集上表现优异的模型,一旦部署到实际环境中,识别率可能断崖式下跌。我…...

基于Hunyuan-MT-7B的算法竞赛题解翻译系统

基于Hunyuan-MT-7B的算法竞赛题解翻译系统 1. 引言 算法竞赛是全球程序员和算法爱好者展示实力的舞台,但语言障碍常常成为知识共享的壁垒。一道优秀的解题思路,可能因为语言不通而无法被更多人学习借鉴。传统的机器翻译工具在面对算法题解中的专业术语…...

Java Web 新冠物资管理系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

摘要 新冠疫情的爆发对全球公共卫生体系提出了严峻挑战,物资管理成为疫情防控中的关键环节。传统物资管理方式依赖人工操作,效率低下且易出错,难以应对突发公共卫生事件中的大规模物资调配需求。为解决这一问题,新冠物资管理系统应…...

从“未知发布者”到“可信来源”:代码签名证书如何重塑用户信任?

一、用户信任危机:数字时代的核心挑战 在软件分发领域,"未知发布者"警告已成为开发者与用户之间的信任鸿沟。据2025年全球软件安全报告显示,73%的用户在看到此类警告时会直接放弃安装,即使软件来自知名企业。这种信任缺…...

ABYSSAL VISION(Flux.1-Dev)风格化研究:模拟Typora等工具的极简文档配图

ABYSSAL VISION(Flux.1-Dev)风格化研究:模拟Typora等工具的极简文档配图 不知道你有没有过这样的体验:写技术文档或者博客的时候,文字部分洋洋洒洒,逻辑清晰,但一到需要配图说明的地方就卡壳了…...

w3x2lni技术指南:魔兽地图跨版本转换的实现与实践

w3x2lni技术指南:魔兽地图跨版本转换的实现与实践 【免费下载链接】w3x2lni 魔兽地图格式转换工具 项目地址: https://gitcode.com/gh_mirrors/w3/w3x2lni 技术原理:跨版本转换的底层架构 w3x2lni作为魔兽地图格式转换的专业工具,其核…...

实战jdk1.8新特性:在快马平台用lambda和stream处理订单数据

最近在重构一个老项目的订单模块时,决定全面升级到JDK1.8。这个版本引入的lambda和Stream API真是让人眼前一亮,尤其是处理集合数据时,代码量直接减半。今天就用InsCode(快马)平台带大家实战这些新特性,模拟一个订单数据处理系统。…...

SDMatte在电商场景落地:商品主图自动去背景+透明PNG生成完整工作流

SDMatte在电商场景落地:商品主图自动去背景透明PNG生成完整工作流 1. 电商场景中的图像处理痛点 在电商运营中,商品主图的质量直接影响转化率。传统处理方式面临三大难题: 人工成本高:专业设计师处理一张图平均耗时15-30分钟边…...

新手避坑指南:用MATLAB复现TI IWR1443雷达的距离与速度FFT处理(附完整代码)

新手避坑指南:用MATLAB复现TI IWR1443雷达的距离与速度FFT处理(附完整代码) 第一次拿到IWR1443毫米波雷达开发板时,看着官方文档里密密麻麻的英文术语和零散的代码片段,我对着电脑屏幕发呆了整整半小时。作为电子工程专…...

OpenClaw 的 Skill免费开源的

OpenClaw 的 Skill 生态非常丰富,其中绝大部分都是免费开源的。以下为您推荐几类实用的免费插件,您可以根据需求选择安装。🛡️ 一、安全与权限控制 (强烈建议优先安装)skill-vetter / clawsec功能:安装插件前自动扫描代码&#x…...

nli-distilroberta-base在工业质检文档中的应用:SOP操作步骤与现场记录逻辑一致性核查

nli-distilroberta-base在工业质检文档中的应用:SOP操作步骤与现场记录逻辑一致性核查 1. 项目背景与价值 在工业制造领域,标准作业程序(SOP)与现场操作记录的一致性核查是质量管理的核心环节。传统人工核查方式存在效率低、主观性强、覆盖不全等问题。…...

NaViL-9B部署案例:中小企业用双24GB显卡替代A100实现降本增效

NaViL-9B部署案例:中小企业用双24GB显卡替代A100实现降本增效 1. 项目背景与价值 在AI大模型应用日益普及的今天,中小企业面临着高昂的硬件投入成本。传统部署方案通常需要A100等高端显卡,单卡价格动辄数万元,让许多企业望而却步…...

为什么92%的候选人栽在FastAPI流式响应题上?——基于137份大厂AI后端面试记录的深度复盘

第一章:FastAPI 2.0流式响应的核心机制与演进脉络FastAPI 2.0 对流式响应(Streaming Response)进行了底层重构,将原先依赖 Starlette 的 StreamingResponse 封装升级为原生异步生成器驱动模型,并深度整合 ASGI 3.0 规范…...

加油卡小程序玩法全解析:刚需场景破局,从充值裂变到合规运营全攻略

国内私家车与新能源车主群体持续扩容,加油、充电作为高频刚性消费场景,自带稳定流量与强付费意愿,加油卡小程序凭借轻量化、易传播、直达用户的优势,成为加油站、第三方车主服务平台、车企布局私域流量的核心载体。不同于潮玩等娱…...

STC-50kg

【广州兰瑟★电子-杨工】提供的STC-50kg 是美国威世世铨(Vishay Celtron)旗下一款经典的 S 型拉压双向称重 / 测力传感器,量程 50 公斤 (50kgf / 490N)。 一、核心参数(标准型) 量程:50 kg (拉力 / 压力双向…...

分支限界法 vs 回溯法:5个关键区别和实际应用场景对比

分支限界法与回溯法:核心差异与工程实践指南 在解决复杂组合优化问题时,算法选择往往决定了程序的执行效率。当面对NP难问题时,两种经典算法——分支限界法和回溯法——常被开发者拿来比较。本文将深入剖析这两种算法的本质区别,并…...

Greasy Fork:用户脚本管理的一站式开源解决方案

Greasy Fork:用户脚本管理的一站式开源解决方案 【免费下载链接】greasyfork An online repository of user scripts. 项目地址: https://gitcode.com/gh_mirrors/gr/greasyfork 从脚本新手到社区贡献者的进阶指南 一、功能探索:解锁浏览器增强新…...

3步打造你的专属阅读系统:开源工具如何重构数字阅读体验

3步打造你的专属阅读系统:开源工具如何重构数字阅读体验 【免费下载链接】legado-Harmony 开源阅读鸿蒙版仓库 项目地址: https://gitcode.com/gh_mirrors/le/legado-Harmony 你是否曾遇到这样的困扰:阅读APP充斥广告弹窗、书源受限无法找到心仪内…...

你的产品过不了EMC测试?很可能是电源接口这3个PCB布局坑没避开

电源接口EMC设计避坑指南:PCB布局中的三个致命细节 当你的产品在EMC测试中屡屡碰壁时,问题往往不在于防护电路设计本身,而是隐藏在PCB布局的细微之处。许多工程师精心设计了符合规范的防护拓扑,却在传导骚扰测试中遭遇滑铁卢。本文…...

OpenClaw多模型切换技巧:GLM-4.7-Flash与Qwen3-32B混合调用实战

OpenClaw多模型切换技巧:GLM-4.7-Flash与Qwen3-32B混合调用实战 1. 为什么需要多模型切换 去年冬天,当我第一次尝试用OpenClaw自动处理周报时,发现一个有趣的现象:用同一个模型处理文本摘要和代码片段时,效果差异很大…...