力扣103.二叉树的锯齿形层序遍历
题目描述
题目链接103. 二叉树的锯齿形层序遍历
给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。
示例 1:

输入:root = [3,9,20,null,null,15,7] 输出:[[3],[20,9],[15,7]]
示例 2:
输入:root = [1] 输出:[[1]]
示例 3:
输入:root = [] 输出:[]
提示:
- 树中节点数目在范围
[0, 2000]内 -100 <= Node.val <= 100
思路解析
与层序遍历类似,值需要在偶数层将所取出的val值数组反转再存入答案数组中
利用一个队列进行每层的节点存储,当队列中有元素时,遍历该队列,取出val值并将该节点的左右子节点放入队列,最后弹出该节点
需要注意的是,在遍历队列的时候,判断语句不能是队列的empty函数。因为每个元素还会放入子节点,所以在遍历前应当创建一个int变量进行存当前队列大小,再用队列大小进行遍历
代码实现
class Solution {
public:vector<vector<int>> zigzagLevelOrder(TreeNode* root) {if(root==nullptr)return {};int cnt = 1;//层数vector<vector<int>>ans;queue<TreeNode*>que;//记录每一层的节点que.push(root);//第一层节点while(que.size()){//当该层还有元素则进入循环vector<int>vec;//记录该层节点的val值int n=que.size();while(n--){//取出val值,从左至右放入下一层元素vec.push_back(que.front()->val);if(que.front()->left)que.push(que.front()->left);if(que.front()->right)que.push(que.front()->right);que.pop();}if(cnt%2==0)reverse(vec.begin(),vec.end());//如果该层为双数层,反转数组ans.push_back(vec);//把该层val值数组放入答案数组中cnt++;//该层处理完成后层数加一}return ans;}
};
相关文章:
力扣103.二叉树的锯齿形层序遍历
题目描述 题目链接103. 二叉树的锯齿形层序遍历 给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 示例 1ÿ…...
Search with Orama
1.前言 在不久之前,我把 DevNow 的搜索组件通过 Lunr 进行了重构,从前端角度实现了对文章内容的搜索,但是在使用体验上,感觉不是特别好,大概有如下几个原因: 社区的文章数量比较少,项目的 Com…...
一万台服务器用saltstack还是ansible?
一万台服务器用saltstack还是ansible? 选择使用 SaltStack 还是 Ansible 来管理一万台服务器,取决于几个关键因素,如性能、扩展性、易用性、配置管理需求和团队的熟悉度。以下是两者的对比分析,帮助你做出决策: SaltStack&…...
计算机类大厂实习春招秋招开发算法面试问答练习题
计算机类大厂实习春招秋招开发算法面试问答练习题 下面有十个非常重要且常问,面试者却注意不到的问题,我们一个个来看,一个个来学。 线程创建到删除过程中,底层是怎么实现的 1.线程创建 线程创建是线程生命周期的起点。在操作系统中,线程可以通过多种方式创建,但无论哪…...
【热门主题】000068 筑牢网络安全防线:守护数字世界的坚实堡垒
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 【热…...
RPC与HTTP调用模式的架构差异
RPC(Remote Procedure Call,远程过程调用)和 HTTP 调用是两种常见的通信模式,它们在架构上有以下一些主要差异: 协议层面 RPC:通常使用自定义的二进制协议,对数据进行高效的序列化和反序列化&am…...
计算机网络之传输层协议UDP
个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 计算机网络之传输层协议UDP 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记,欢迎大家在评论区交流讨论💌 目…...
Uniapp 微信小程序内打开web网页
技术栈:Uniapp Vue3 简介 实际业务中有时候会需要在本微信小程序内打开web页面,这时候可以封装一个路由页面专门用于此场景。 在路由跳转的时候携带路由参数,拼接上web url,接收页面进行参数接收即可。 实现 webview页面 新…...
阅读方法论
选择固有缺陷,选项是对比出来的...
373. 查找和最小的 K 对数字
参考的这个博客: https://zhuanlan.zhihu.com/p/457239781 然后看这个代码我想到了另外一种方法,就是一步一步往里加元组 ( i , j ) (i,j) (i,j),看代码就知道了,不过需要做一步去重,去重不能用 i n t [ ] int[] int…...
常用函数的使用错题汇总
目录 new/delete malloc/free1. 语言和类型2. 内存分配3. 内存释放4. 安全性和类型安全5. 其他特性总结 线程停止文件流 new/delete malloc/free malloc/free 和 new/delete 是 C/C 中用于动态内存管理的两种方式,它们有一些重要的区别。以下是这两种方式的比较&…...
uniapp手机端一些坑记录
关于 z-paging-x 组件,在ios上有时候通过弹窗去粗发它reload时会触发闪退,可能是弹框插入进去导致的DOM 元素已经被移除或者不可用,解决办法是加上他自带属性 :showRefresherWhenReload"true" 加上showRefresherWhe…...
2024学习之前端微信小程序开发教程,从入门到精通-含基础+实战+源码code
目录 一、简单介绍 二、课程需知 三、内容编排 1、小程序基础 起步式 目录结构 小程序框架 场景值 逻辑层 视图层 组件 视图容器 基础内容 表单组件 导航 媒体组件 Api 路由 界面 交互 网络 数据缓存 自定义组件 2、项目实战 …...
netconf 代码架构
NETCONF(Network Configuration Protocol)是一种基于 XML 的网络配置管理协议,主要用于在网络设备之间进行配置管理、状态监控和操作。它被设计为一种可扩展的协议,并且在自动化网络管理中扮演着重要角色。NETCONF 通过安全的通信…...
蒙特卡洛方法(Monte Carlo,MC)
目录 1 序言 2 Monte Carlo法计算积分 3 最优化计算Monte Carlo法 1 序言 蒙特卡罗方法(Monte Carlo)是由冯诺依曼和乌拉姆等人发明的,“蒙特卡罗”这个名字是出自摩纳哥的蒙特卡罗赌场,这个方法是一类基于概率的方法的统称。是一种应用随机数来进行…...
python学习笔记8-函数2
参数传递 传不可变对象 & 传可变对象 def func(b):print(id(a), a) #140737041872600 234print(id(b), b) #140737041872600 234a 234 func(a)def func(b):print(id(a), a) #1413554098560 [343]print(id(b), b) #1413554098560 [343]a [343] func(a)def func(b):b.appe…...
电商项目高级篇06-缓存
电商项目高级篇06-缓存 1、docker下启动redis2、项目整合redis3、redis改造三级分类业务 缓存 流程图: data cache.load(id);//从缓存加载数据 If(data null){ data db.load(id);//从数据库加载数据 cache.put(id,data);//保存到 cache 中 } return data;在我们…...
使用 `aircrack-ng`扫描、获取握手包
使用 aircrack-ng 工具集来扫描 5GHz WiFi 网络的过程与扫描 2.4GHz 网络类似,但需要注意一些特定的配置和命令。以下是一个详细的步骤指南,帮助你在 5GHz 频段上扫描 WiFi 网络并捕获握手包。 ### 前提条件 1. **操作系统**:通常在 Linux 系…...
基于大数据python 酒店数据分析可视化大屏系统(源码+LW+部署讲解+数据库+ppt)
!!!!!!!!! 很对人不知道选题怎么选 不清楚自己适合做哪块内容 都可以免费来问我 避免后期給自己答辩找麻烦 增加难度(部分学校只有一次答辩机会 没弄好就延迟…...
uniapp中父组件调用子组件方法
实现过程(setup语法糖形式下) 在子组件完成方法逻辑,并封装。在子组件中使用defineExpose暴露子组件的该方法。在父组件完成子组件ref的绑定。通过ref调用子组件暴露的方法。 子组件示例 <template> </template><script se…...
2026 年豆包开启付费订阅,中国 AI 大模型商业化迎来大考!
豆包更新付费订阅,打破行业免费格局2026 年 5 月 4 日,字节跳动旗下 AI 产品豆包在苹果 App Store 悄然更新付费订阅方案。标准版 68 元/月、加强版 200 元/月、专业版 500 元/月,这三档价格梯度划破了中国 AI 大模型行业持续两年的“免费狂欢…...
BLheli电调硬件避坑指南:搞懂MOS驱动逻辑,别让固件和电路“打架”
BLheli电调硬件设计深度解析:从MOS驱动逻辑到实战排错 在无刷电机控制领域,BLheli固件因其出色的性能和开源特性成为众多开发者的首选。但当你兴奋地将精心设计的硬件与下载的固件结合时,电机却纹丝不动,甚至冒出缕缕青烟——这种…...
通过 Taotoken CLI 工具一键配置开发环境与团队协作密钥
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 通过 Taotoken CLI 工具一键配置开发环境与团队协作密钥 在开始使用 Taotoken 平台调用大模型 API 之前,开发者通常需要…...
为团队统一开发环境使用TaotokenCLI一键配置
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为团队统一开发环境使用TaotokenCLI一键配置 当技术团队开始将大模型能力集成到多个项目中时,一个常见的挑战是如何快速…...
2026届必备的五大AI辅助论文工具横评
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在学术写作的进程当中,恰当地运用论文AI工具,能够明显地提高文献检索…...
三指拖拽神器:让Windows触控板拥有MacBook般的流畅体验
三指拖拽神器:让Windows触控板拥有MacBook般的流畅体验 【免费下载链接】ThreeFingersDragOnWindows Enables macOS-style three-finger dragging functionality on Windows Precision touchpads. 项目地址: https://gitcode.com/gh_mirrors/th/ThreeFingersDragO…...
告别访问失败!手把手教你用中标麒麟OS挂载Win10的SMB共享(附终端挂载命令)
中标麒麟OS与Win10 SMB共享深度配置指南:从原理到实战避坑 在跨平台协作成为常态的今天,Linux与Windows系统间的文件共享已成为运维人员的必备技能。中标麒麟作为国产操作系统的代表,其与Windows的SMB协议互通却常因配置细节不到位而引发&quo…...
TrollInstallerX深度解析:iOS越狱生态中的智能漏洞编排引擎
TrollInstallerX深度解析:iOS越狱生态中的智能漏洞编排引擎 【免费下载链接】TrollInstallerX A TrollStore installer for iOS 14.0 - 16.6.1 项目地址: https://gitcode.com/gh_mirrors/tr/TrollInstallerX 面对iOS系统日益复杂的安全防护机制,…...
Obsidian BMO Chatbot:基于RAG与LLM的个人知识库智能问答实践
1. 项目概述:当知识库遇上AI助手如果你和我一样,是Obsidian的重度用户,那么你一定体会过那种“知识在手边,却不知如何用”的尴尬。笔记越记越多,形成了一个庞大的个人知识库,但当你需要快速查找某个概念、串…...
Python 爬虫反爬突破:多维度风控综合对抗策略
前言 当下主流互联网平台的反爬体系,早已告别单一 IP 封禁、请求头校验的初级阶段,转而采用多维度联动风控体系,从访问行为、设备指纹、网络环境、请求特征、账号画像、流量链路六大维度构建多层防护屏障。单一的换 IP、伪造 UA、简单 Cooki…...
