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

蓝桥杯--bfs专题第二个题目(leetcode103二叉树)

文章目录

  • 1.题目概述
  • 2.思路分析
  • 3.代码分析

1.题目概述

这个题目是关于二叉树的锯齿形的遍历:这个锯齿形是什么意思呢?简单的通俗的解释,就是S型的,例如下面的这个示例里面的二叉树:

第一行从左到右:但是只有3;

第二行从右向左:20,9

第三行从左向右:16,7

最后返回的在这个结果就是我们的读取的顺序,其中每一行的结果放到一个数组里面就可以了;

image-20250325203225644

2.思路分析

这个实际上就是我们的二叉树的层序遍历的方法,也就是广度优先遍历,这一层遍历结束之后,再去遍历接下来的一层,以此类推;

但是需要注意的就是我们的这个遍历和传统的方式略有不同,我们的这个遍历需要按照S型的方式去进行,因此这个地方我们需要添加一个标注位,奇数的时候正常的进行遍历(就是从左向右的顺序);

但是偶数行的时候,需要让这个正常遍历的结果进行逆序,满足这个题目的相关要求;

image-20250322223753734

3.代码分析

  1. 创建列表,对于特殊的情况(没有节点)进行判断,空的话直接返回这个ret即可;
  2. 创建队列,因为虽然这个题目是二叉树,我们的这个数据结构是队列,先进先出,之前的那个题目,我们介绍了这个队列的一个基本的使用流程;
  3. 和之前的那个流程不一样的就是,我们的这个题目需要进行标志位的设置,其他的没什么区别;
  4. 创建队列,把我们的这个节点添加到队列里面去;
  5. level就是用来记录,判断我们的这个是偶数层还是奇数层的标志;
  6. 首先还是按照这个队列的整体思路,使用sz判断什么时候这一层遍历结束(我们需要知道这个节点位于那一层上面,不然没法知道这个结果里面谁和谁是一组的,这个很重要,也是我们这个专题里面的第一个题目的核心方法,不理解的去上面一个题目回顾一下);
  7. 每一层的这个数据我们都放到这个temp数组里面去,最后把这个temp添加到我们的返回值ret里面去;
  8. 我们的这个每一层结束的时候都需要对于level数值进行判断,而且之后要更新,如果是偶数,需要进行这个倒序的处理,满足题目要求;

image-20250322224932485

相关文章:

  • 使用事件监听器来处理并发环境中RabbitMQ的同步响应问题
  • Java设计模式--单例模式
  • 计算机四级 - 数据库原理(操作系统部分)- 第8章「死锁」
  • pdfh5 pdf
  • RWA代币化崛起中的香港机遇:数字金融新枢纽的破局之道
  • GitLab 中文版17.10正式发布,27项重点功能解读【二】
  • GeoChat : Grounded Large Vision-Language Model for Remote Sensing论文精读
  • 解决 Not allowed to load local resource 问题
  • 简单选择排序
  • 手绘的思维导图怎么转成电子版思维导图?分享今年刚测试出来的方法
  • 设备预测性维护:工业设备的 “天气预报”,你家机器需要吗?
  • 【10万QPS压力测试】Redis三主三从高可用集群基准测试
  • Linux CentOS7 安装emqx详细教程
  • 信源的分类及数学模型
  • Unix Domain Socket、IPC、RPC与gRPC的深度解析与实战
  • 【多线程】线程安全问题
  • 【服务器环境安装指南-指定 cuda 版本】在 Ubuntu 22.04 上完成 cuda-toolkit 12.0 和 cudnn 12.x 的安装教程
  • 智慧路灯的发展史
  • springboot中logback日志配置
  • 20402/20404系列电子校准件
  • 香港建站优化方案/搜索引擎关键词广告
  • 建设企业网站的需求/惠州seo建站
  • 如何做网站微信小程序/nba今日数据
  • 怎么免费建个免费的站点/企业培训课程清单
  • 企业建立自己网站主要方式/广州网络seo优化
  • 潜江资讯网招聘司机/平台优化是什么意思