面试热题(二叉树的锯齿形层次遍历)
给你二叉树的根节点
root,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)输入:root = [3,9,20,null,null,15,7] 输出:[[3],[20,9],[15,7]]

大家一定对树的层序遍历已经能够耳熟能详了吧,这道题其实就在二叉树的层序遍历的基础上对它的结果进行了一点点的修改

通过大家的仔细观察不难发现:是将结果集中的索引为奇数的数组进行了一次翻转,我们就可以利用模拟,它让做什么,我们就做什么的方法进行解决(树的程层序遍历是一定要会的,最好是可以进行默写甚至是进行手撕)
public List<List<Integer>> zigzagLevelOrder(TreeNode root) {List<List<Integer>> list=new ArrayList<>();if(root==null){return list;}Queue<pair> queue=new LinkedList<>();queue.offer(new pair(root,0));while(!queue.isEmpty()){pair pair=queue.poll();TreeNode node=pair.node;int level=pair.level;if(list.size()==level){list.add(new ArrayList<>());}List<Integer> item=list.get(level);item.add(node.val);if(node.left!=null){queue.offer(new pair(node.left,level+1));}if(node.right!=null){queue.offer(new pair(node.right,level+1));}}return list;}public class pair{private TreeNode node;private Integer level;public pair(TreeNode node,Integer level){this.level=level;this.node=node;}}
接下来我们对其结果数组进行操作:
for (int i = 0; i <list.size(); i++) {if(i%2==1){Collections.reverse(list.get(i));}
这样的这道题就完美的结束了,一般读题的时候都想想可以用我们所熟悉的数据结构或者是模板去以出发点去进行思考,这样的话可以事半功倍
相关文章:
面试热题(二叉树的锯齿形层次遍历)
给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行) 输入:root [3,9,20,null,null,15,7] 输出:[[3…...
JVM—内存管理(运行时数据区)、垃圾回收
背景介绍 当JVM类加载器加载完字节码文件之后,会交给执行引擎执行,在执行的过程中会有一块JVM内存区域来存放程序运行过程中的数据,也就是我们图中放的运行时数据区,那这一块运行时数据区究竟帮我们做了哪些工作?我们…...
一百五十一、Kettle——Linux上安装的kettle8.2开启carte服务
一、目的 kettle8.2在Linux上安装好可以启动界面、并且可以连接MySQL、Hive、ClickHouse等数据库后,准备在Linux上启动kettle的carte服务 二、实施步骤 (一)carte服务文件路径 kettle的Linux运行的carte服务文件是carte.sh (二…...
19. python从入门到精通——Web编程
HTTP协议 HTTP协议的常用方法 方法 描述 GET 请求指定的页面信息,并返回实体主体。 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 …...
PostMan 教程
安装https://www.cnblogs.com/mafly/p/postman.html Postman 使用方法详解https://blog.csdn.net/fxbin123/article/details/80428216 postman进行http接口测试https://blog.csdn.net/five3/article/details/53021084 postman的使用方法详解!最全面的教程https:/…...
Http常见状态码
一、状态码大类 状态码分类说明1xx响应中——临时状态码,表示请求已经接受,告诉客户端应该继续请求或者如果它已经完成则忽略它2xx成功——表示请求已经被成功接收,处理已完成3xx重定向——重定向到其它地方:它让客户端再发起一个…...
C语言之位运算
一、什么是位运算 所谓位运算是指进行二进制位的运算 在系统软件中,常要处理二进位的问题 例如,将一个存储单元中的各二进位左移或右移一位,两个数按位相加等 二、位运算符和位运算 1、按位与 运算符(&) 参加运算的两个数据ÿ…...
c语言进阶部分详解(数据在内存中的存储)
大家好,今天要进行梳理的内容是数据在内存中的存储相关内容。 在C语言中,数据在内存中的存储是一个非常重要的概念。了解数据在内存中的存储方式可以帮助我们更好地理解程序的执行过程,优化内存使用,提高程序的性能。 目录 一.数…...
VIOOVI的ECRS工时分析软件分析:SOP的核心和特征是什么?
制定SOP的主要目的是为企业做技术储备、提供企业的工作效率、防止同样的错误反复出现、让员工作业有标准化的行为准则。以规定的成本、规定的工作时间,生产质量均匀、符合规范的产品。为了能够达到上述要求,如果制造现场的操作混乱,比如制作工…...
无涯教程-Perl - lock函数
描述 此函数将咨询锁放在共享变量或THING中包含的引用对象上,直到该锁超出范围。 lock()是一个"弱关键字":这意味着,如果您在调用该函数之前已通过该名称定义了该函数,则将改为调用该函数。 语法 以下是此函数的简单语法- lock THING返回值 此函数不返回任何值…...
SpringBoot案例-部门管理-前后端联调
前后端联调 教学资料中提供了“前端工程”,将其解压即可使用nginx,启动nginx后,访问:http://localhost:90 小结 开发流程 明确需求、阅读接口文档、思路分析、接口开发(遵循接口文档)接口调试 postman测…...
每天一道leetcode:139. 单词拆分(动态规划中等)
今日份题目: 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。 示例1 输入: s "leetcode", …...
【C++】友元(含内部类)
一、友元是什么 我把你添加为我的友元,那么你可以访问我的成员。特别注意:它是单向的。即,我把你添加为我的友元,我却不能访问你的成员,除非你把我添加为你的友元。 以下代码可以让你粗略了解友元的使用。 #includ…...
SQL | 检索数据
1-检索数据 1.1-检索单个列 SELECT prod_name FROM Products; 上述SELECT语句从Products表中检索一个名为prod_name的列。 所要查找的列在select后面,from关键字指出从那个表查询数据。 输出如下: prod_name8 inch teddy bear12 inch teddy bear18…...
typeScript 之 运算符
工具: PlayGround 算术运算符 运算符描述加-减*乘/除%取模(求余)自增–自减 注意和--,实例: let value 0; console.log(value); //0, 先显示再增加后为1 console.log(value); //2,先增加后为2再显示关系运算符 运算符描述 …...
BGP实验
题目 IP地址配置 172.16.X.0/24为模拟用户环回接口接口 172.16.7.X/32为BGP邻居关系建立的环回接口 R1: R2: R3: R4: R5: R6: R7: R8: BGP邻居关系建立、宣告和反射器、联邦配置 R…...
pytest fixture 常用参数
fixture 常用的参数 参数一:autouse,作用:自动运行,无需调用 举例一:我们在类中定义一个function 范围的fixture; 设置它自动执行autouseTrue,那么我们看下它执行结果 输出: 说明:…...
vue项目里面有多个模块的服务,前端处理url转发
先看下vue的代理配置里面: 现在是在 /pca 基础上增加了 2个模块的服务: /dca、 /api 现在服务器的nginx 没有在/pca 服务里面做转发接受 /dca、 /api的服务,所以需要前端自己去配置每个服务模块对应的 URL 先拿登录的api 做示例吧: 先定义…...
web表单
在了解了 Flask Bootstrap 基本框架之后,我们来了解一下 Flask 框架的 表单( form ),以帮助我们创建交互式的 Web 应用,最后会有个提交个人信息的例子。 Flask-WTF 是 Flask 框架的一个扩展,用来做表单的交互,是对 WT…...
C++BUG记录:文件无法创建,文件路径正确但使用了Format
问题1:xx.Format()不存在与参数列表匹配的重载函数 问题:文件的路径名字是通过Format转换组合而成的,会报错“FileName.Format()不存在与参数列表匹配的重载函数”。 FileName.Format("%s%d", FilePath, num);//报错:…...
AntiDupl.NET:智能图片去重工具的完整指南与核心技术解析
AntiDupl.NET:智能图片去重工具的完整指南与核心技术解析 【免费下载链接】AntiDupl A program to search similar and defect pictures on the disk 项目地址: https://gitcode.com/gh_mirrors/an/AntiDupl 在数字时代,我们每天都在创建和收集大…...
5分钟高效掌握Snap.Hutao:原神玩家的完整工具箱解决方案
5分钟高效掌握Snap.Hutao:原神玩家的完整工具箱解决方案 【免费下载链接】Snap.Hutao 实用的开源多功能原神工具箱 🧰 / Multifunctional Open-Source Genshin Impact Toolkit 🧰 项目地址: https://gitcode.com/GitHub_Trending/sn/Snap.H…...
终极指南:如何用Universal-x86-Tuning-Utility释放你的硬件性能潜力
终极指南:如何用Universal-x86-Tuning-Utility释放你的硬件性能潜力 【免费下载链接】Universal-x86-Tuning-Utility Unlock the full potential of your Intel/AMD based device. 项目地址: https://gitcode.com/gh_mirrors/un/Universal-x86-Tuning-Utility …...
一款现代化、轻量级、跨平台的开源数据库管理客户端
👉 这是一个或许对你有用的社群🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料: 《项目实战(视频)》:从书中学,往事上…...
渐进式增长GAN:高分辨率图像生成的突破与实践
1. 渐进式增长GAN基础解析生成对抗网络(GAN)近年来在图像合成领域取得了显著进展,但其生成高分辨率图像的能力一直受限。传统GAN在生成6464像素以上的图像时,往往面临训练不稳定和图像质量下降的问题。2017年NVIDIA团队提出的渐进…...
高效微信聊天记录导出工具:3步永久保存你的珍贵对话
高效微信聊天记录导出工具:3步永久保存你的珍贵对话 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 你是否曾经因为手机丢失、系统升级或者更换设备ÿ…...
Phi-3-mini-4k-instruct-gguf效果展示:逻辑推理题逐步推导过程可视化案例
Phi-3-mini-4k-instruct-gguf效果展示:逻辑推理题逐步推导过程可视化案例 1. 模型简介 Phi-3-Mini-4K-Instruct是一个38亿参数的轻量级开源模型,采用GGUF格式提供。这个模型在Phi-3数据集上进行了训练,该数据集包含合成数据和经过筛选的公开…...
机器学习不平衡分类问题:重采样技术详解与实践
1. 不平衡分类问题概述在机器学习实践中,我们经常会遇到类别分布严重不均衡的数据集。比如在信用卡欺诈检测中,正常交易可能占99.9%,而欺诈交易仅占0.1%。这种极端不平衡的数据分布会给模型训练带来显著挑战。传统分类算法在这种场景下往往表…...
AstrBot:一体化开源AI聊天机器人平台部署与架构解析
1. 项目概述:一个开源的、全能的AI聊天机器人平台 如果你正在寻找一个能够无缝接入你日常使用的QQ、微信、飞书、钉钉、Telegram等主流即时通讯软件,并且功能强大到足以构建个人AI伴侣、智能客服、自动化助手乃至企业知识库的解决方案,那么A…...
地理加权回归(GWR)带宽怎么选?R语言中aic、cv、经验法全对比与避坑指南
地理加权回归(GWR)带宽选择实战:R语言中AIC、CV与经验法的深度评测 空间数据分析中,地理加权回归(GWR)因其能够捕捉空间异质性而备受青睐。但许多研究者在模型构建过程中,往往被一个看似简单却至关重要的问题困扰——如何选择最优带宽&#x…...
