二叉树层序遍历(BFS)完全指南:从基础到实战

一、层序遍历核心概念

1.1 什么是层序遍历?

层序遍历(Level Order Traversal)是一种广度优先搜索(BFS)算法,它按照树的层次,从上到下、从左到右逐层访问每个节点。

示例二叉树: 1 ← 第1层 / \ 2 3 ← 第2层 / \ \ 4 5 6 ← 第3层 层序遍历结果:[[1], [2, 3], [4, 5, 6]] 访问顺序:1 → 2 → 3 → 4 → 5 → 6

1.2 与深度优先搜索(DFS)对比

特性层序遍历(BFS)深度优先搜索(DFS)
数据结构队列(Queue)栈(Stack)
访问顺序层次顺序深度优先
空间复杂度O(w),w为最大宽度O(h),h为树高
应用场景最短路径、层次相关路径查找、回溯

二、基础层序遍历实现

2.1 基本实现(返回一维数组)

// 基本层序遍历:返回所有节点的值(不区分层次)vector<int>levelOrderSimple(TreeNode*root){vector<int>result;if(!root)returnresult;queue<TreeNode*>q;// 核心数据结构:队列q.push(root);while(!q.empty()){TreeNode*node=q.front();// 1. 取队首q.pop();// 2. 出队result.push_back(node->val);// 3. 处理当前节点// 4. 将子节点入队(先左后右)if(node->left)q.push(node->left);if(node->right)q.push(node->right);}returnresult;}// 示例树输出:[1, 2, 3, 4, 5, 6]

2.2 分层存储的实现(返回二维数组)

// 分层存储的层序遍历:每层一个子数组vector<vector<int>>levelOrder(TreeNode*root){vector<vector<int>>result;if(!root)returnresult;queue<TreeNode*>q;q.push(root);while(!q.empty()){intlevelSize=q.size();// 关键:记录当前层节点数vector<int>currentLevel;// 处理当前层的所有节点for(inti=0;i<levelSize;i++){TreeNode*node=q.front();q.pop();currentLevel.push_back(node->val);// 将下一层节点入队if(node->left)q.push(node->left);if(node->right)q.push(node->right);}result.push_back(currentLevel);// 将当前层加入结果}returnresult;}// 示例树输出:[[1], [2, 3], [4, 5, 6]]

三、层序遍历执行过程详解

3.1 执行过程可视化

树结构: 1 / \ 2 3 / \ \ 4 5 6 执行过程追踪表: | 循环 | 队列内容 | 当前层大小 | 当前处理节点 | 操作 | 当前结果层 | |------|-----------------|------------|--------------|---------------------|--------------| | 初始 | [1] | - | - | 初始化 | [] | | 1 | [1] | 1 | 1 | 处理1,入队2、3 | [1] | | | [2, 3] | | | 完成第1层 | | | 2 | [2, 3] | 2 | 2 | 处理2,入队4、5 | [2] | | | [3, 4, 5] | | 3 | 处理3,入队6 | [2, 3] | | | [4, 5, 6] | | | 完成第2层 | | | 3 | [4, 5, 6] | 3 | 4 | 处理4,无子节点 | [4] | | | [5, 6] | | 5 | 处理5,无子节点 | [4, 5] | | | [6] | | 6 | 处理6,无子节点 | [4, 5, 6] | | | [] | | | 完成第3层 | | 最终结果:[[1], [2, 3], [4, 5, 6]]

3.2 队列状态变化图

时间轴: t0 → t1 → t2 → t3 队列: [1] → [2,3] → [4,5,6] → [] ↓ ↓ ↓ ↓ 处理: 1 2 → 3 4 → 5 → 6 完成 层次: 第1层 第2层 第3层

四、层序遍历的常见变种

4.1 自底向上层序遍历

// 从底层到顶层的层序遍历vector<vector<int>>levelOrderBottom(TreeNode*root){vector<vector<int>>result;if(!root)returnresult;queue<TreeNode*>q;q.push(root);while(!q.empty()){intlevelSize=q.size();vector<int>currentLevel;for(inti=0;i<levelSize;i++){TreeNode*node=q.front();q.pop();currentLevel.push_back(node->val);if(node->left)q.push(node->left);if(node->right)q.push(node->right);}// 关键区别:每次插入到结果的开头result.insert(result.begin(),currentLevel);}returnresult;}// 示例树输出:[[4, 5, 6], [2, 3], [1]]

4.2 锯齿形层序遍历(Z字形遍历)

// 锯齿形层序遍历:一层从左到右,下一层从右到左vector<vector<int>>zigzagLevelOrder(TreeNode*root){vector<vector<int>>result;if(!root)returnresult;queue<TreeNode*>q;q.push(root);boolleftToRight=true;// 方向标志while(!q.empty()){intlevelSize=q

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1206290.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于大数据的大学生就业信息推荐系统的 爬虫数据可视化大屏分析系统

目录 大数据驱动的就业信息推荐与可视化分析系统 项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作 大数据驱动的就业信息推荐与可视化分析系统 该系统整合大数据技术与可视化分析&#xff0c;构建面向大学…

基于大数据的旅游景点推荐系统的设计与实现

目录摘要项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作摘要 随着旅游业的快速发展&#xff0c;游客对个性化旅游体验的需求日益增长。传统的旅游推荐系统主要依赖人工筛选或简单规则&#xff0c;难以满足…

基于大数据的高校毕业生招聘信息推荐系统 爬虫 数据分析可视化大屏系统mpohdj33

目录大数据驱动的高校毕业生招聘信息推荐系统项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作大数据驱动的高校毕业生招聘信息推荐系统 该系统整合了爬虫技术、数据分析与可视化大屏&#xff0c;旨在为高校…

flask python旅游景点印象服务系统

目录基于Flask的旅游景点印象服务系统摘要项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作基于Flask的旅游景点印象服务系统摘要 该系统采用Python的Flask框架开发&#xff0c;旨在为用户提供旅游景点的印…

Python基于大数据的图书推荐系统的协同过滤算法的爬虫 数据可视化分析系统9w4u33nr

目录协同过滤算法的核心原理爬虫系统设计要点大数据处理流程可视化分析模块实现系统优化方向项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作协同过滤算法的核心原理 协同过滤算法通过分析用户历史行为数据…

基于大数据大数据分析的化妆品销售系统 美妆商城系统 爬虫可视化分析系统

目录大数据驱动的化妆品销售与美妆商城系统分析爬虫技术在数据采集中的应用可视化分析系统的功能实现核心技术架构与算法模型实际应用价值与效益项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作大数据驱动的…

二叉树--求最小深度(迭代和递归)

使用了两种解法&#xff0c;递归法和迭代法。两种方法的对比总结DFS (方法一 minDepth):特点: 代码简洁&#xff0c;逻辑通过 max 巧妙处理了单链树的情况。缺点: 必须遍历完所有的分支才能确定谁最小。如果树严重左偏或右偏&#xff0c;栈深度较大。BFS (方法二 levelOrder):特…

流批一体架构实践:如何用Flink统一数据处理流程

流批一体架构实践&#xff1a;如何用Flink统一数据处理流程 关键词&#xff1a;流批一体、Apache Flink、数据处理、实时计算、离线分析 摘要&#xff1a;传统数据处理中&#xff0c;流处理&#xff08;实时&#xff09;与批处理&#xff08;离线&#xff09;像“两条并行的铁轨…

高校教学AI辅助平台移动端架构:AI应用架构师的跨端适配方案

好的,作为一名资深软件工程师和技术博主,我很乐意为你撰写这篇关于“高校教学AI辅助平台移动端架构”的技术博客文章,重点探讨跨端适配方案。 高校教学AI辅助平台移动端架构实践:AI应用架构师的跨端适配挑战与方案 副标题: 如何优雅地让AI教学能力在手机、平板上无缝奔跑…

C#使用pythonnet简单示例

1.nuget安装pythonnet2.编写python测试文件 example.py内容如下def HelloWorld():print("Hello world")class Calculator:def add(self,a:float,b:float)->float:return ab3.c#下测试Runtime.PythonDLL "C:\\Program Files\\Python312\\python312.dll"…

校平机:让金属板材变平整的“整形医生“

‍在机械制造、汽车生产、钢板加工等领域&#xff0c;我们常常能看到一种专门用于矫正金属板材平整度的设备——校平机。它就像是金属板材的"整形医生"&#xff0c;能够将弯曲、翘曲的板材变得平整如镜。一、什么是校平机&#xff1f;校平机&#xff08;也称为矫平机…

python 环境问题 - 指南

python 环境问题 - 指南2026-01-23 19:32 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; fon…

月薪从5K到13.2W,白帽子黑客到底有多赚钱?一文带你如何靠挖漏洞赚取海量收益_白帽子如何赚钱

近年来&#xff0c;由于技术发展和国家支持&#xff0c;信息安全行业正处于一个发展迅猛的时期。有越来越多有技术、有想法的白帽子参与到维护互联网安全的行动中去。 大数据时代&#xff0c;信息安全的使命更值得我们深思和探讨。 不掌握一门安全技术&#xff0c;不会 Web 攻…

【网络安全】盘点八种攻击者常用的防火墙绕过方法_渗透测试怎么绕过防火墙

防火墙在国内外安全产品市场中的占有率和使用率都名列前茅&#xff0c;根据相关机构研究结果显示&#xff0c;2021 年全球独立防火墙程序市场销售额达到数十亿美元&#xff0c;预计 2028 年将达到百亿美元以上。国内层面&#xff0c;防火墙产业在过去几年同样蓬勃发展&#xff…

什么是黑客?合法黑客和非法黑客的区别,零基础入门到精通(超详细),收藏这一篇就够了!

什么是黑客&#xff1f;合法黑客和非法黑客的区别 黑客&#xff08;Hacker&#xff09;是指对设计、编程和计算机科学方面具高度理解的人&#xff0c;包含了下列人物&#xff1a; “黑客”一词最早是用来称呼研究如何盗用电话系统的人&#xff0c;这一类人士也被称作“飞客”&…

冬季氛围 SVG 交互组件及案例应用

1. 全屏下雪E2编辑器招牌原创模板&#xff0c;矢量化特效高清丝滑&#xff0c;应用于《让梦想成真》《迪士尼奇幻冬日季 | 点亮你的冬日童话&#xff01;》《节日心愿单》等&#xff0c;可通过专属教程了解更多实现方式。2. 无限选择器由 科蚪大神发明并独家授权&#xff0c;以…

ONENET API创建设备并返回设备密钥和设备ID

一、基本信息 1.API鉴权了解 https://iot.10086.cn/doc/aiot/fuse/detail/1464 主要有三种 需要根据不同范围使用不同的 鉴权 2.新增设备API https://iot.10086.cn/doc/aiot/fuse/detail/1465 二、python 生成token 和时间戳自动创建设备 token目录下两个文件 config.js…

导师严选2026 TOP10 AI论文平台:专科生毕业论文全场景测评

导师严选2026 TOP10 AI论文平台&#xff1a;专科生毕业论文全场景测评 2026年AI论文平台测评&#xff1a;专科生毕业论文必备工具全解析 随着人工智能技术的不断进步&#xff0c;越来越多的专科生开始借助AI写作工具提升毕业论文的撰写效率。然而&#xff0c;面对市场上种类繁…

GITLAB Docker 容器化部署指南 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

详细介绍:【ComfyUI】Stable Zero123 单图生成3D视图

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …