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

Kimi LeetCode 114.二叉树展开为链表 Kotlin实现

发布时间:2026/9/27 22:48:19 来源:云帆数科 栏目:资讯中心
Kimi    LeetCode 114.二叉树展开为链表 Kotlin实现
LeetCode 114. 二叉树展开为链表 — Kotlin 实现题目要求将二叉树原地展开为单链表顺序为先序遍历顺序用right指针充当链表的next。思路一迭代推荐O(1)O(1)O(1)额外空间对当前节点若存在左子树找到左子树的最右节点将右子树挂到它后面再把左子树移到右边/** * Example: * var ti TreeNode(5) * var v ti.val * Definition for a binary tree node. * class TreeNode(var val: Int) { * var left: TreeNode? null * var right: TreeNode? null * } */classSolution{funflatten(root:TreeNode?):Unit{varcurrrootwhile(curr!null){if(curr.left!null){// 找到左子树的最右节点varpredecessorcurr.leftwhile(predecessor?.right!null){predecessorpredecessor.right}// 右子树接到左子树最右节点之后predecessor?.rightcurr.right// 左子树移到右边左指针清空curr.rightcurr.left curr.leftnull}// 移动到下一个节点currcurr.right}}}时间复杂度O(n)空间复杂度O(1)无递归栈思路二递归反向先序遍历按 右 → 左 → 根 的顺序处理把每个节点逐个接到前驱节点的右边classSolution{privatevarprev:TreeNode?nullfunflatten(root:TreeNode?):Unit{if(rootnull)returnflatten(root.right)// 先处理右子树flatten(root.left)// 再处理左子树root.rightprev// 接到已处理好的链表头部root.leftnullprevroot}}时间复杂度O(n)空间复杂度O(h)递归栈深度思路三栈模拟先序遍历迭代直观版用栈按根 → 左 → 右的顺序处理逐个拼接importjava.util.ArrayDequeclassSolution{funflatten(root:TreeNode?):Unit{if(rootnull)returnvalstackArrayDequeTreeNode()stack.push(root)vartail:TreeNode?nullwhile(stack.isNotEmpty()){valnodestack.pop()tail?.apply{rightnode leftnull}tailnode node.right?.let{stack.push(it)}node.left?.let{stack.push(it)}}}}时间复杂度O(n)空间复杂度O(n)Kotlin 实现要点可空类型安全Kotlin 的空安全检查天然契合树节点的可空结构?.和?:让空判断非常简洁。迭代法无递归栈开销Rust/Kotlin 这类语言写迭代版反而比递归更省心避免了成员变量或闭包共享状态。思路二的顺序必须是 右 → 左 → 根先序的逆序prev从null开始逐渐拼出完整链表。示例[1,2,5,3,4,null,6]展开为1 → 2 → 3 → 4 → 5 → 6✅

相关推荐

简历技术栈全面复习——EtherCAT / IgH Master / CiA402
简历技术栈全面复习——EtherCAT / IgH Master / CiA402

EtherCAT → IgH Master → CiA402 → CSP。⑥ EtherCAT:机器人电机控制的通信骨架先看整体:你的控制程序↓EtherCAT Master↓PDO↓ EtherCAT Slave↓电机驱动器↓电机如果使用 IgH:机器人控制程序↓ IgH EtherCAT Master↓ EtherCAT↓ Drive… · 2026/9/27 22:48:19

PLC编程必学!S7-1200定时器指令用法,一篇讲透TP/TON/TOF/TONR
PLC编程必学!S7-1200定时器指令用法,一篇讲透TP/TON/TOF/TONR

做工控PLC编程,延时启动、定时停机、脉冲触发、设备累计计时这些功能,90%都要靠定时器实现。可以说,定时器是西门子S7-1200 PLC编程的核心指令,也是新手入门必须吃透的基础内容。很多刚接触S7-1200的朋友,总是分不清TP… · 2026/9/27 22:48:19

5招搞定wordpress批量发文章,免费工具全解析
5招搞定wordpress批量发文章,免费工具全解析

5招搞定wordpress批量发文章,免费工具全解析 刚接手一个500页的企业站,客户甩来几百篇SEO软文,让你“尽快上线”。你盯着后台那个单篇发布按钮,脑子瞬间嗡嗡作响。手动复制粘贴?手都要废了,而且错漏率极高。更让人头大的是,如果服务器… · 2026/9/27 22:48:13

Y7000P Ubuntu 18.04 WiFi驱动修复:AIC8800编译安装教程
Y7000P Ubuntu 18.04 WiFi驱动修复:AIC8800编译安装教程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 23:31:08

5分钟搞定ESP32/ESP8266开发环境:Arduino IDE 2.0国内镜像配置指南
5分钟搞定ESP32/ESP8266开发环境:Arduino IDE 2.0国内镜像配置指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 23:31:08

VSCODE加ESP-IDF配置指南:ESP32开发环境搭建与调试
VSCODE加ESP-IDF配置指南:ESP32开发环境搭建与调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 23:31:02

Linux 上 WFDB 心电信号分析实战:从 wfdb.tar.gz 到 HRV 频域分析
Linux 上 WFDB 心电信号分析实战:从 wfdb.tar.gz 到 HRV 频域分析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 23:31:02

ESP32-S3 免驱 USB 摄像头实战:TinyUSB UVC 协议与 OV2640 图像传输
ESP32-S3 免驱 USB 摄像头实战:TinyUSB UVC 协议与 OV2640 图像传输

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 23:30:56

建设的访问网站需要密码?3步搞定完整流程不慌
建设的访问网站需要密码?3步搞定完整流程不慌

建设的访问网站需要密码?3步搞定完整流程不慌 自己不会代码想做网站,却卡在访问需要密码这一步,其实并非技术难题,而是流程认知偏差。很多新手误以为“密码”是技术壁垒,实则是权限配置缺失。本文拆解【建设的访问网站需要密码】背后的完整流程,从原理… · 2026/9/27 23:30:56

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

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

企业微信二维码