图解LeetCode——剑指 Offer 32 - III. 从上到下打印二叉树 III
一、题目
请实现一个函数按照之字形顺序打印二叉树,即:第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。
二、示例
2.1> 示例1

提示:
- 节点总数 <=
1000
三、解题思路
本题是算法《剑指 Offer 32 - II. 从上到下打印二叉树 II》题的变形,在原有层序遍历的基础上,根据奇数层按照由左到右进行输出,而根据偶数层则按照从右向左进行输出;
那么层序遍历我们之前的题解中提到过,通过采用双向队列Deque deque以及配合当前层级的节点数num就可以实现按层遍历操作,那么本题的难点就在于如何根据奇数/偶数层数来转换遍历节点。
为了实现遍历结果的反转,我们可以再创建一个变量LinkedList item,由于LinkedList提供了从头部开始链接的addFirst(...)方法和从尾部开始链接的addLast(...)方法,所以我们只需执行如下操作:
【奇数层】调用
addLast(...)方法进行item的子结果拼装;
【偶数层】调用addFirst(...)方法进行item的子结果拼装;
那么最终将每层的item组合到最终结果List<List> result即可。根据上面介绍的解题思路,我们以二叉树结构[1,2,3,4,5,6,7]为例,具体看一下针对这道题的处理逻辑。请见下图所示:

四、代码实现
public class Solution {public List<List<Integer>> levelOrder(TreeNode root) {List<List<Integer>> result = new ArrayList();if (root == null) return result;Deque<TreeNode> deque = new ArrayDeque();deque.addLast(root);int num;boolean reverse = false;while(!deque.isEmpty()) {num = deque.size();LinkedList<Integer> item = new LinkedList<>();for (int i = 0; i < num; i++) {TreeNode node = deque.removeFirst();if (reverse) item.addFirst(node.val);else item.addLast(node.val);if (node.left != null) deque.addLast(node.left);if (node.right != null) deque.addLast(node.right);}result.add(item);reverse = !reverse;}return result;}
}

今天的文章内容就这些了:
写作不易,笔者几个小时甚至数天完成的一篇文章,只愿换来您几秒钟的 点赞 & 分享 。
更多技术干货,欢迎大家关注公众号“爪哇缪斯” ~ \(^o^)/ ~ 「干货分享,每天更新」
相关文章:
图解LeetCode——剑指 Offer 32 - III. 从上到下打印二叉树 III
一、题目 请实现一个函数按照之字形顺序打印二叉树,即:第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。 二、示例 2.1> 示例1 提示: …...
【快排与归并排序算法】
作者:指针不指南吗 专栏:算法篇 🐾或许会很慢,但是不可以停下🐾 文章目录一、快速排序 ( Quick Sort )二、归并排序 ( Merge Sort )总结一、快速排序 ( Quick Sort ) 1.思路 找出一个分界点,随机的调整区间…...
面试官问我:说说你对JMM内存模型的理解?为什么需要JMM?
点个关注,必回关 随着CPU和内存的发展速度差异的问题,导致CPU的速度远快于内存,所以现在的CPU加入了高速 缓存,高速缓存一般可以分为L1、L2、L3三级缓存。基于上面的例子我们知道了这导致了缓存一致 性的问题,所以加入…...
工程管理系统源码之提高工程项目管理软件的效率
高效的工程项目管理软件不仅能够提高效率还应可以帮你节省成本提升利润 在工程行业中,管理不畅以及不良的项目执行,往往会导致项目延期、成本上升、回款拖后,最终导致项目整体盈利下降。企企管理云业财一体化的项目管理系统,确保…...
SpringBoot集成xxl-job实现
SpringBoot集成xxl-job实现 一、xxl-job介绍 xxl-job是一个分布式任务调度平台,核心设计目标是开发迅速、学习简单、轻量级、易扩展。源码:下载地址编译环境:Maven3、Jdk1.8、MySQL5.7 二、调度中心 初始化调度数据库,执行指定…...
欧几里得度量和余弦度量的可取消生物识别方案
欧几里得度量和余弦度量的可取消生物识别方案 便捷的生物识别数据是一把双刃剑,在为生物识别认证系统的繁荣铺平道路的同时,也带来了个人隐私问题。为了缓解这种担忧,提出了各种生物特征模板保护方案来保护生物特征模板免于信息泄露。现有提案…...
平板作为主机扩展屏的实现
网上有许多教程使用平板作为电脑的拓展屏,但是多数都是需要在电脑和平板上都装上服务器和客户端的软件才行,而且有些系统还没有对应的软件。 那有没有一种方法只需要在主机上运行一个软件,而平板上只需要扫个码就行呢? 答案是当然…...
HTTP和HTTPS有什么区别?如何实现网站的HTTPS?
细心的朋友会发现,我们在浏览网站时,有的网址以http开头,而有的网站却以https开头,那这两者之间有什么区别吗?http的网站如何能变成https呢?本文中科三方针对这个问题做下简单介绍。 什么是http࿱…...
Rockstar Games遭黑客攻击,《侠盗猎车手6》90个开发视频外泄
当地时间9月19日,视频游戏开发商Rockstar Games证实,其 热门游戏《侠盗猎车手6》(Grand Theft Auto)开发片段遭到黑客大规模窃取 ,这一泄露事件立即在游戏圈迅速传播。 据报道, 上周末黑客至少泄露了90个游…...
RabbitMQ-客户端源码之AMQPImpl+Method
AMQPImpl类包括AMQP接口(public class AMQImpl implements AMQP)主要囊括了AMQP协议中的通信帧的类别。 这里以Connection.Start帧做一个例子。 public static class Connection {public static final int INDEX 10;public static class Startextends…...
雅思经验(7)
我发现雅思阅读要命的不是难度,而是时间的把控。考试时间是总共一小时,但是要写三篇文章,之后总共40道题目,也就是说每篇文章平均是13.3道。但是他们很多人说,如果誊写答案需要花掉3、4分钟每篇,也就是说真…...
Ubuntu20.04 用 `hwclock` 或 `timedatectl` 设置RTC硬件时钟为本地时区
Ubuntu20.04用 hwclock 或 timedatectl 设置硬件时区为本地时区 可以用hwclock命令 sudo hwclock --localtime --systohc👆效果等同👇 , --localtime的简写是-l ; --systohc的简写是-w sudo hwclock -l -w也可以用timedatectl命令 👆效果等…...
大学物理·第15章【量子物理】
黑体 斯特藩玻耳兹曼定律 维恩定律 光电效应 在光照射下 ,电子从金属表面逸出的现象,叫光电效应. 逸出的电子,叫光电子 经典理论: 光电流值与入射光强成正比截止频率(红限)v0对某种金属来说,只有…...
2010-2019年290个地级市经济发展与城市绿化数据
2010-2019年290个地级市经济发展与城市绿化数据 1、时间:2010-2019年 2、来源:城市统计NJ,缺失情况与NJ一致 3、范围:290个地级市 4、指标: 综合经济:地区生产总值、人均地区生产总值、地区生产总值增…...
【CSS 布局】-多列布局
一、两列布局 两列布局:一列定宽(也有可能由子元素决定宽度),一列自适应的布局。 创建一个父盒子,和子盒子 <div class"container clearfix"><div class"left ">定宽</div><div class"right…...
从C语言向C++过渡
文章目录前言1.命名空间1.域的概念2.命名空间的使用2.C输入&输出3.缺省参数1.概念2.分类3.注意事项4.函数重载5.引用1.概念2.使用注意事项3.引用使用场景4.指针和引用的区别6.内联函数7.auto关键字8.nullptr前言 C被成为带类的C,本文由C语言向C过度,将会初步介…...
Matter 研讨会回顾(第三期)|乐鑫 Matter 免开发方案与证书服务介绍
1 月 17 日,乐鑫举办了以“乐鑫 Matter 免开发方案与证书服务介绍”为主题的第三期 Matter 线上研讨会,介绍乐鑫开箱即用的 ESP-ZeroCode 模组及其免开发 Matter 方案,以及证书生成和预配置相关服务。欢迎观看研讨会的视频回放了解详情。&…...
函数栈帧的创建和销毁——“C”
各位CSDN的uu们你们好呀,今天小雅兰来为大家介绍一个知识点——函数栈帧的创建和销毁。其实这个知识点,我们很早之前就要讲,但是因为我的一系列原因,才一直拖到了现在,那么,话不多说,让我们一起…...
腾讯云对象存储+企业网盘 打通数据链“最后一公里
对云厂商和企业用户来说,随着数据规模的快速增长,企业除了对存储功能和性能的要求不断增加,也越来越注重数据分发的效率。在传统数据分发的过程中,数据管理员往往需要先在存储桶下载对应的客户方案/交付资料,再使用微信…...
在浏览器输入url到发起http请求,这过程发生了什么
当用户输入url,操作系统会将输入事件传递到浏览器中,在这过程中,浏览器可能会做一些预处理,比如 Chrome 会根据历史统计来预估所输入字符对应的网站,例如输入goog,根据之前的历史发现 90% 的概率会访问「ww…...
AdGuard浏览器扩展:企业级隐私保护与广告拦截解决方案
AdGuard浏览器扩展:企业级隐私保护与广告拦截解决方案 【免费下载链接】AdguardBrowserExtension AdGuard browser extension 项目地址: https://gitcode.com/gh_mirrors/ad/AdguardBrowserExtension AdGuard浏览器扩展是一款专注于隐私保护和广告拦截的开源…...
CLIP Prompt Tuning实战指南:如何用少量样本优化多模态模型性能
最近在做一个多模态内容理解的项目,用到了CLIP模型。大家都知道CLIP很强大,但真到了要让它适应我们自己的业务数据时,传统全量微调(Full Fine-tuning)那套方法就有点让人头疼了——动辄几十GB的显存需求,还…...
实战详解:从零构建 LangChain 智能 Agent,让大模型真正“动起来”!
文章目录📖 一、为什么我们需要 Agent?🔄 Agent 核心工作流图解🛠️ 二、环境准备与核心组件核心组件介绍💻 三、实战代码:构建“全能数据分析师”Agent1. 定义工具 (Tools)2. 构建 Agent 逻辑 (ReAct 模式…...
Python金融计算提速迫在眉睫!(仅剩3类未公开的底层优化手段,第3种已被高盛2023年专利覆盖)
第一章:Python金融计算提速迫在眉睫!(仅剩3类未公开的底层优化手段,第3种已被高盛2023年专利覆盖)高频回测、实时风险敞口计算与蒙特卡洛期权定价正面临Python原生执行效率的严峻瓶颈。当单次万标的风险因子矩阵运算耗…...
OpenClaw 采用分层解耦的架构设计,请详细说明其核心架构分层(至少 4 层)及各层的核心职责,并描述一条自然语言指令从输入到任务完成的完整执行闭环流程。
一、核心架构分层(四层/五层模型) OpenClaw 采用 分层解耦的模块化架构,主流技术文档将其划分为 四层核心架构,部分资料扩展为五层。以下是整合后的完整架构: 层级名称核心职责关键技术组件第一层交互接入层(Interfa…...
老旧电脑焕新:OpenClaw+GLM-4.7-Flash在4GB内存设备上的优化运行方案
老旧电脑焕新:OpenClawGLM-4.7-Flash在4GB内存设备上的优化运行方案 1. 为什么要在老旧电脑上部署AI助手? 去年整理书房时,我翻出一台2015年的MacBook Air,4GB内存的配置在当下连浏览器开几个标签页都卡顿。正当准备将它送进回收…...
UVM避坑指南:为什么你的sequence卡住了?item_done没调用的常见问题排查
UVM验证中的sequence卡死问题:item_done未调用的深度排查手册 在芯片验证领域,UVM框架的sequence机制堪称验证工程师的"瑞士军刀",但这把利器偶尔也会出现卡壳的情况。想象一下这样的场景:你的验证环境已经运行了数百个…...
ChatTTS离线部署实战:从模型优化到生产环境效率提升
最近在做一个需要离线语音合成的项目,用到了ChatTTS这个效果不错的模型。但直接部署原版模型时,遇到了不少头疼的问题:推理速度慢、内存占用高,在资源受限的生产环境里简直是“吞金兽”。经过一番折腾,总算摸索出一套从…...
AWS Lambda性能调优终极指南:如何通过内存配置平衡成本与执行速度
AWS Lambda性能调优终极指南:如何通过内存配置平衡成本与执行速度 【免费下载链接】aws-lambda-power-tuning AWS Lambda Power Tuning is an open-source tool that can help you visualize and fine-tune the memory/power configuration of Lambda functions. It…...
MedGemma-X性能优化:基于CUDA的医疗影像加速处理
MedGemma-X性能优化:基于CUDA的医疗影像加速处理 1. 当医生等结果的时间,能不能再短一点? 上周陪家人做肺部CT复查,从扫描结束到拿到报告,中间隔了近40分钟。放射科医生说,现在AI辅助系统已经能帮着初筛&…...
