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

队列+宽搜(BFS)-103.二叉树的锯齿形层序遍历-力扣(LeetCode)

一、题目解析

1、锯齿形层序遍历就是从1开始,奇数从左往右遍历,偶数从右往左遍历

2、树的节点范围在[0,2000]

二、算法原理

解法:层序遍历+变量记录奇偶

这个标记位可以是bool or int,这个看自己选择了

这里用int当作标记位

详细过程

1、创建一个队列和二位数组

2、记标记位1,判断根是否为空,然后入队列

3、循环层序遍历之前,先记录此时队列中的元素个数,该个数为层序遍历循环数

4、通过front()取出队头元素,然后pop()掉,判断左右是否为空,不为空则将数据加入到一维数组中,循环结束后判断标记位奇偶,奇则将一维数组加入到二维数组中;偶则将一维数组逆置后,加入到二维数组

5、最后返回二维数组(二维数组应在入根前创建,如果root为空,也可以直接返回二维数组)

详细可以自行查看

链接:queue - C++ Reference

三、代码示例

class Solution {
public:vector<vector<int>> zigzagLevelOrder(TreeNode* root){int size = 1;vector<vector<int>> vv;queue<TreeNode*> vt;if(root) vt.push(root);else return vv;while(vt.size()){int num = vt.size();TreeNode* tmp;vector<int> v;while(num--){tmp = vt.front();vt.pop();v.push_back(tmp->val);if(tmp->left)vt.push(tmp->left);if(tmp->right)vt.push(tmp->right);}if(size++ % 2 == 0) reverse(v.begin(),v.end());vv.push_back(v);}return vv;}
};

看到最后,如果对您有所帮助,还请点赞、收藏和关注一键三连,在未来还会继续带来优秀的内容,感谢观看,我们下期再见!

http://www.dtcms.com/a/411448.html

相关文章:

  • 使用Eigen矩阵库,计算Ax = B (m>n)矩阵的方法
  • MIT 6.S081 文件系统的基本结构 (Lab10:File system)
  • 跨境电商建站公司北京建设安全网络平台87
  • 【读书笔记】深入理解JVM C1~3
  • Spring Boot携手Leaflet,点亮省级旅游口号WebGIS可视化之路
  • 第一次备考怎么记笔记?三步模板直接用​
  • 网站建设基础筹备宁河做网站公司
  • 中小型网站建设与管理总结免费h5生成网站
  • 有哪些做的好的汽配零配件网站代理网站哪个好
  • 2025GUI项目实践:Unity编辑模式下GUI运行
  • C语言:10行杨辉三角形
  • 软件开发和网站建设哪个好广西建筑培训网
  • GPU微架构演进分析--从SIMT到Scalar-Vector-Tensor计算的混合配比与调度
  • app应用网站源码建设通会员多少钱一个月
  • 分布式 WebSocket 架构设计与实现:跨节点实时通信解决方案
  • 君临天下游戏网站开发者专业的东莞网站排名
  • MHC-Net
  • 分布式专题——23 Kafka日志索引详解
  • 上海殷行建设网站天津宏宇网站建设
  • 作为 PHP 开发者,我第一次用 Go 写了个桌面应用
  • 档案网站的建设方案网站建设需要服务器么
  • Weblogic 任意文件上传漏洞(CVE-2018-2894)
  • C++11部分
  • springboot房地产销售管理系统的设计与实现(代码+数据库+LW)
  • 做寂网站房地产网站做编辑刚刚入行
  • 网站设计哪家比较好wordpress放弃php
  • 百度收录排名好的网站我建设的网站打开很慢
  • Spring为什么推荐使用构造函数进行依赖注入??
  • 【读书笔记】架构整洁之道 P4 组件构建原则
  • (20)ASP.NET Core2.2 EF创建模型(必需属性和可选属性、最大长度、并发标记、阴影属性)