新闻详情

新闻详情

首页 / 资讯中心 / 详情

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

发布时间:2026/9/27 22:48:22来源:尧图网络
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✅
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

YuE2 零样本翻唱实战:把一段录音做成爵士版 2026/9/27 23:36:14

YuE2 零样本翻唱实战:把一段录音做成爵士版

YuE2 零样本翻唱实战:把一段录音做成爵士版 【免费下载链接】YuE YuE2: frontier music generation with symbolic planning, zero-shot covers, and agentic music editing. 项目地址: https://gitcode.com/GitHub_Trending/yue/YuE 手里有一段 source.wav&…

阅读更多 →
Ryujinx Switch 模拟器新手上手指南:从源码构建到跑起游戏只需 6 步 2026/9/27 23:36:14

Ryujinx Switch 模拟器新手上手指南:从源码构建到跑起游戏只需 6 步

Ryujinx Switch 模拟器新手上手指南:从源码构建到跑起游戏只需 6 步 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx Ryujinx 是用 C# 编写的开源 Nintendo Switch 模拟器。…

阅读更多 →
VB.NET+SQL Server BS架构订餐系统:从环境搭建到部署避坑 2026/9/27 23:36:14

VB.NET+SQL Server BS架构订餐系统:从环境搭建到部署避坑

简介:基于VB与VB.NET结合SQL Server开发的Web订餐系统,采用B/S架构,面向需要完成课程设计、毕业设计或餐饮信息化项目的计算机专业学生与开发人员,涵盖了菜品管理、订单处理、餐台管理等典型模块。项目源码经过完整测试校正&#…

阅读更多 →
NativeWind 原理剖析:从 Tailwind CSS 到 React Native StyleSheet 的编译与运行时架构 2026/9/27 23:36:07

NativeWind 原理剖析:从 Tailwind CSS 到 React Native StyleSheet 的编译与运行时架构

移动开发跨平台前端 【免费下载链接】nativewind The utility-first workflow you love from Tailwind CSS in your React Native applications. 项目地址: https://gitcode.com/gh_mirrors/na/nativewind 点击查看 免费下载 本篇技术指南以 NativeWind 官方文档 H…

阅读更多 →
AiShort 入门指南 | 复制精选提示词到 ChatGPT/DeepSeek/Cursor,30 秒提升 AI 对话质量 2026/9/27 23:36:07

AiShort 入门指南 | 复制精选提示词到 ChatGPT/DeepSeek/Cursor,30 秒提升 AI 对话质量

AI 应用提示工程人工智能前端 【免费下载链接】ChatGPT-Shortcut Stop writing prompts from scratch — a searchable prompt library for ChatGPT, Claude, Gemini and Cursor Русский 한국어 العربية हिन्दी ไทย | 别再从头写提示词&…

阅读更多 →
SVGEdit 快速上手指南:在浏览器中部署、集成与二次开发的完整方案 2026/9/27 23:36:07

SVGEdit 快速上手指南:在浏览器中部署、集成与二次开发的完整方案

前端图形学 【免费下载链接】svgedit Powerful SVG-Editor for your browser 项目地址: https://gitcode.com/gh_mirrors/sv/svgedit 点击查看 免费下载 SVGEdit 是一款基于 Web、由 JavaScript 驱动的开源 SVG 绘图编辑器,可在任何现代浏览器中运行&am…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉