首页/新闻资讯/正文详情

DeepSeek LeetCode 103. 二叉树的锯齿形层序遍历 Golang实现

发布时间:2026/9/24 17:54:15 来源:云帆数科 栏目:资讯中心
DeepSeek    LeetCode 103. 二叉树的锯齿形层序遍历 Golang实现
LeetCode 103. 二叉树的锯齿形层序遍历 Golang 实现思路与普通层序遍历一致用队列逐层处理。区别在于需要交替改变每层的填充方向· 维护布尔变量 leftToRight 表示当前层方向。· 每层预分配 level : make([]int, size)· 从左到右level[i] node.Val· 从右到左level[size-1-i] node.Val· 子节点始终按 左 → 右 顺序入队保证下一层在队列中从左到右排列。· 每层结束后切换方向。Golang 代码packagemain// Definition for a binary tree node.typeTreeNodestruct{ValintLeft*TreeNode Right*TreeNode}funczigzagLevelOrder(root*TreeNode)[][]int{varres[][]intifrootnil{returnres}queue:[]*TreeNode{root}head:0// 队头索引避免频繁切片leftToRight:trueforheadlen(queue){size:len(queue)-head// 当前层节点数level:make([]int,size)fori:0;isize;i{node:queue[head]head// 根据方向决定填充位置ifleftToRight{level[i]node.Val}else{level[size-1-i]node.Val}// 子节点始终按从左到右入队ifnode.Left!nil{queueappend(queue,node.Left)}ifnode.Right!nil{queueappend(queue,node.Right)}}resappend(res,level)leftToRight!leftToRight// 切换方向}returnres}复杂度分析指标 复杂度 说明时间 O(n) 每个节点恰好入队、出队一次填充 level 为 O(1)空间 O(n) 队列最多存一层的节点最坏约 n/2结果集存储所有节点值关键点说明用 head 索引代替 queue queue[1:]避免频繁切片带来的额外开销同时减少底层数组的内存保留问题。固定子节点入队顺序无论当前层方向如何都先 Left 后 Right 入队保证下一层在队列中始终是从左到右排列。方向交替每层结束后 leftToRight !leftToRight实现锯齿效果。空树处理root nil 时直接返回空切片。替代写法先收集再反转如果不想用索引定位也可以正常追加后再按需反转forheadlen(queue){size:len(queue)-head level:make([]int,0,size)fori:0;isize;i{node:queue[head]headlevelappend(level,node.Val)ifnode.Left!nil{queueappend(queue,node.Left)}ifnode.Right!nil{queueappend(queue,node.Right)}}if!leftToRight{forl,r:0,len(level)-1;lr;l,rl1,r-1{level[l],level[r]level[r],level[l]}}resappend(res,level)leftToRight!leftToRight}两种写法时间复杂度均为 O(n)可根据偏好选择。

相关推荐

[人工智能]Python01:numpy.random.Generator:概念用法与最佳实践
[人工智能]Python01:numpy.random.Generator:概念用法与最佳实践

numpy.random.Generator:概念、用法与最佳实践本文面向工程实践,系统介绍NumPy中推荐使用的随机数接口numpy.random.Generator,包括实例构造方式、常用分布方法以及在可复现性和并行仿真中的最佳实践,适合作为超过4页的技术参考文… · 2026/9/24 17:54:15

云原生架构-服务网格
云原生架构-服务网格

一、服务网格本质 服务网格的本质,是把微服务之间通信的“脏活累活”——重试、加密、监控、限流——从每个服务的业务代码里抽出来,交给一个统一的、独立的基础设施层去干。业务代码只关心业务逻辑,通信治理由网格统一负责。 在没有服务网格… · 2026/9/24 17:54:09

鸿蒙权限模型实战:Markdown 图片跟随文档的五层落位设计(spike 实验推翻两条铁律)
鸿蒙权限模型实战:Markdown 图片跟随文档的五层落位设计(spike 实验推翻两条铁律)

鸿蒙权限模型实战:Markdown 图片跟随文档的五层落位设计(spike 实验推翻两条铁律) Markdown 文档里插入图片,有个经典难题:图片文件放哪。放全局图库,文档拷给别人图片就断链;放文档旁的 assets… · 2026/9/24 17:54:09

FunClip 基于ASR的视频剪辑实战:2小时多说话人录像按人拆出3段精华
FunClip 基于ASR的视频剪辑实战:2小时多说话人录像按人拆出3段精华

FunClip 基于ASR的视频剪辑实战:2小时多说话人录像按人拆出3段精华 【免费下载链接】FunClip FunASR-powered video transcription, subtitle generation, and LLM-assisted clipping tool with a local Gradio UI. 项目地址: https://gitcode.com/GitHub_Trendin… · 2026/9/24 18:30:42

Java养老管理系统实战:SSM架构、费用计算与避坑指南
Java养老管理系统实战:SSM架构、费用计算与避坑指南

简介:这份源码面向 Java 开发者、养老行业信息化人员及系统设计学习者,以可运行的完整工程呈现中州养老系统的设计与实践。压缩包共 141 个文件,包括 120 个 Java 源文件、17 个 XML 配置文件,以及 YML、JSON、Git 忽略文件和说明… · 2026/9/24 18:30:36

RHEL 9.2虚拟机安装与初始化配置实战:从VMware到yum源
RHEL 9.2虚拟机安装与初始化配置实战:从VMware到yum源

1. 写在开头:为什么又开始折腾RHEL了如果你是个常年跟Linux打交道的人,一定对Red Hat Enterprise Linux这个名字不陌生。我最近又重新把RHEL装了一遍,起因其实挺简单——手头有个测试环境需要模拟生产服务器的运行场景,而生产那边… · 2026/9/24 18:30:36

VMware Workstation 导入 OVF/OVA 虚拟机模板完全指南
VMware Workstation 导入 OVF/OVA 虚拟机模板完全指南

开头如果你跟我一样,是个在 Windows 电脑上用 VMware Workstation 跑虚拟机的人,那你大概率遇到过这种情况:从网上下载了一个现成的虚拟机镜像,结果解压出来不是一整个文件夹,而是一堆扩展名很陌生的文件——.ovf、.vm… · 2026/9/24 18:30:30

IM聊天体验三支柱:消息状态、通知触达与多端同步
IM聊天体验三支柱:消息状态、通知触达与多端同步

1. 为什么“聊天体验”不是UI动效,而是消息、通知、多端三根承重柱做即时通讯源码的人,十有八九栽在同一个认知陷阱里:以为把气泡动画调得丝滑、输入框加个打字提示、消息列表用上虚拟滚动,就算“体验做好了”。我带过7个IM项目团… · 2026/9/24 18:30:30

C++俄罗斯方块源码解析:从MFC工程到双缓冲游戏开发实践
C++俄罗斯方块源码解析:从MFC工程到双缓冲游戏开发实践

简介:这是基于C实现的俄罗斯方块小游戏源码,面向C初学者和游戏开发入门的个人学习者,通过一个可运行的经典小游戏展示窗口程序的基本架构与游戏循环设计。压缩包共27个文件,大小约230KB,其中10个头文件用于类声明与接口… · 2026/9/24 18:30:30

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码