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

力扣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 &#xff0c;返回其节点值的 锯齿形层序遍历 。&#xff08;即先从左往右&#xff0c;再从右往左进行下一层遍历&#xff0c;以此类推&#xff0c;层与层之间交替进行&#xff09;。 示例 1&#xff…...

Search with Orama

1.前言 在不久之前&#xff0c;我把 DevNow 的搜索组件通过 Lunr 进行了重构&#xff0c;从前端角度实现了对文章内容的搜索&#xff0c;但是在使用体验上&#xff0c;感觉不是特别好&#xff0c;大概有如下几个原因&#xff1a; 社区的文章数量比较少&#xff0c;项目的 Com…...

一万台服务器用saltstack还是ansible?

一万台服务器用saltstack还是ansible? 选择使用 SaltStack 还是 Ansible 来管理一万台服务器&#xff0c;取决于几个关键因素&#xff0c;如性能、扩展性、易用性、配置管理需求和团队的熟悉度。以下是两者的对比分析&#xff0c;帮助你做出决策&#xff1a; SaltStack&…...

计算机类大厂实习春招秋招开发算法面试问答练习题

计算机类大厂实习春招秋招开发算法面试问答练习题 下面有十个非常重要且常问,面试者却注意不到的问题,我们一个个来看,一个个来学。 线程创建到删除过程中,底层是怎么实现的 1.线程创建 线程创建是线程生命周期的起点。在操作系统中,线程可以通过多种方式创建,但无论哪…...

【热门主题】000068 筑牢网络安全防线:守护数字世界的坚实堡垒

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 【热…...

RPC与HTTP调用模式的架构差异

RPC&#xff08;Remote Procedure Call&#xff0c;远程过程调用&#xff09;和 HTTP 调用是两种常见的通信模式&#xff0c;它们在架构上有以下一些主要差异&#xff1a; 协议层面 RPC&#xff1a;通常使用自定义的二进制协议&#xff0c;对数据进行高效的序列化和反序列化&am…...

计算机网络之传输层协议UDP

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 计算机网络之传输层协议UDP 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目…...

Uniapp 微信小程序内打开web网页

技术栈&#xff1a;Uniapp Vue3 简介 实际业务中有时候会需要在本微信小程序内打开web页面&#xff0c;这时候可以封装一个路由页面专门用于此场景。 在路由跳转的时候携带路由参数&#xff0c;拼接上web url&#xff0c;接收页面进行参数接收即可。 实现 webview页面 新…...

阅读方法论

选择固有缺陷,选项是对比出来的...

373. 查找和最小的 K 对数字

参考的这个博客&#xff1a; https://zhuanlan.zhihu.com/p/457239781 然后看这个代码我想到了另外一种方法&#xff0c;就是一步一步往里加元组 ( i , j ) (i,j) (i,j)&#xff0c;看代码就知道了&#xff0c;不过需要做一步去重&#xff0c;去重不能用 i n t [ ] int[] int…...

常用函数的使用错题汇总

目录 new/delete malloc/free1. 语言和类型2. 内存分配3. 内存释放4. 安全性和类型安全5. 其他特性总结 线程停止文件流 new/delete malloc/free malloc/free 和 new/delete 是 C/C 中用于动态内存管理的两种方式&#xff0c;它们有一些重要的区别。以下是这两种方式的比较&…...

uniapp手机端一些坑记录

关于 z-paging-x 组件&#xff0c;在ios上有时候通过弹窗去粗发它reload时会触发闪退&#xff0c;可能是弹框插入进去导致的DOM 元素已经被移除或者不可用&#xff0c;解决办法是加上他自带属性 :showRefresherWhenReload"true" 加上showRefresherWhe…...

2024学习之前端微信小程序开发教程,从入门到精通-含基础+实战+源码code

目录 一、简单介绍 二、课程需知 三、内容编排 1、小程序基础  起步式 目录结构 小程序框架 场景值  逻辑层 视图层 组件 视图容器 基础内容 表单组件 导航 媒体组件 Api 路由 界面 交互 网络 数据缓存 自定义组件 2、项目实战 …...

netconf 代码架构

NETCONF&#xff08;Network Configuration Protocol&#xff09;是一种基于 XML 的网络配置管理协议&#xff0c;主要用于在网络设备之间进行配置管理、状态监控和操作。它被设计为一种可扩展的协议&#xff0c;并且在自动化网络管理中扮演着重要角色。NETCONF 通过安全的通信…...

蒙特卡洛方法(Monte Carlo,MC)

目录 1 序言 2 Monte Carlo法计算积分 3 最优化计算Monte Carlo法 1 序言 蒙特卡罗方法(Monte Carlo)是由冯诺依曼和乌拉姆等人发明的&#xff0c;“蒙特卡罗”这个名字是出自摩纳哥的蒙特卡罗赌场&#xff0c;这个方法是一类基于概率的方法的统称。是一种应用随机数来进行…...

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改造三级分类业务 缓存 流程图&#xff1a; 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 网络类似&#xff0c;但需要注意一些特定的配置和命令。以下是一个详细的步骤指南&#xff0c;帮助你在 5GHz 频段上扫描 WiFi 网络并捕获握手包。 ### 前提条件 1. **操作系统**&#xff1a;通常在 Linux 系…...

基于大数据python 酒店数据分析可视化大屏系统(源码+LW+部署讲解+数据库+ppt)

&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 很对人不知道选题怎么选 不清楚自己适合做哪块内容 都可以免费来问我 避免后期給自己答辩找麻烦 增加难度&#xff08;部分学校只有一次答辩机会 没弄好就延迟…...

uniapp中父组件调用子组件方法

实现过程&#xff08;setup语法糖形式下&#xff09; 在子组件完成方法逻辑&#xff0c;并封装。在子组件中使用defineExpose暴露子组件的该方法。在父组件完成子组件ref的绑定。通过ref调用子组件暴露的方法。 子组件示例 <template> </template><script se…...

3大核心功能让你轻松掌握League-Toolkit英雄联盟辅助工具

3大核心功能让你轻松掌握League-Toolkit英雄联盟辅助工具 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League-Toolkit是一款基…...

SAR成像RD算法仿真:为什么你的点目标旁瓣降不下去?从原理到Matlab代码的深度调优

SAR成像RD算法旁瓣抑制难题&#xff1a;从原理到Matlab调优实战 当你在Matlab中实现RD&#xff08;距离多普勒&#xff09;算法进行SAR&#xff08;合成孔径雷达&#xff09;成像仿真时&#xff0c;是否遇到过这样的困扰&#xff1a;明明按照教科书步骤编写了代码&#xff0c;但…...

用Artisan构建专业级咖啡烘焙解决方案:从数据采集到品质优化的全流程指南

用Artisan构建专业级咖啡烘焙解决方案&#xff1a;从数据采集到品质优化的全流程指南 【免费下载链接】artisan artisan: visual scope for coffee roasters 项目地址: https://gitcode.com/gh_mirrors/ar/artisan 在咖啡产业数字化转型的浪潮中&#xff0c;专业烘焙师正…...

Synology Photos CPU驱动人脸识别补丁:解锁旧设备AI相册的终极方案

Synology Photos CPU驱动人脸识别补丁&#xff1a;解锁旧设备AI相册的终极方案 【免费下载链接】Synology_Photos_Face_Patch Synology Photos Facial Recognition Patch 项目地址: https://gitcode.com/gh_mirrors/sy/Synology_Photos_Face_Patch 还在为群晖NAS无法使用…...

漫画收藏自由:picacomic-downloader的离线阅读解决方案

漫画收藏自由&#xff1a;picacomic-downloader的离线阅读解决方案 【免费下载链接】picacomic-downloader 哔咔漫画 picacomic pica漫画 bika漫画 PicACG 多线程下载器&#xff0c;带图形界面 带收藏夹&#xff0c;已打包exe 下载速度飞快 项目地址: https://gitcode.com/gh…...

打造 TC397 AUTOSAR OS 多核工程最小系统:点亮多核的明灯之旅

tc397autosar os多核工程最小系统 tc397 autosar os 多核最小系统、配置工程、tasking工程 实现功能&#xff1a;六核跑起来、亮灯。在汽车电子领域&#xff0c;多核处理器的应用愈发广泛&#xff0c;TC397 凭借其强大的性能成为众多开发者的心头好。今天咱们就来聊聊如何搭建 …...

pdf2htmlEX高级调试技术:汇编级调试与反汇编

pdf2htmlEX高级调试技术&#xff1a;汇编级调试与反汇编 【免费下载链接】pdf2htmlEX Convert PDF to HTML without losing text or format. 项目地址: https://gitcode.com/gh_mirrors/pd/pdf2htmlEX pdf2htmlEX是一款能够将PDF文件转换为HTML格式同时保持文本和格式完…...

从零到一:构建你的第一个智能体应用实战指南

1. 为什么你需要一个智能体应用&#xff1f; 想象一下这样的场景&#xff1a;每天早上你的手机自动整理当天的重要会议和待办事项&#xff0c;根据你的日程推荐最佳出行路线&#xff1b;工作时自动汇总行业动态和关键邮件&#xff1b;晚上回家前提前打开空调并推荐符合你口味的…...

3个核心突破:LangChain的大语言模型应用开发指南

3个核心突破&#xff1a;LangChain的大语言模型应用开发指南 【免费下载链接】langchain LangChain是一个由大型语言模型 (LLM) 驱动的应用程序开发框架。。源项目地址&#xff1a;https://github.com/langchain-ai/langchain 项目地址: https://gitcode.com/GitHub_Trending…...

java毕业设计基于springboot铜仁一中学生成绩管理系统

前言 铜仁一中学生成绩管理系统是基于Java和Spring Boot框架开发的&#xff0c;目的是高效管理学生的成绩信息&#xff0c;为学校教学管理提供便利。通过该系统&#xff0c;教师可以方便地录入学生的各科考试成绩&#xff0c;学生和教师能够根据不同条件查询成绩&#xff0c;系…...