Kimi    LeetCode 114.二叉树展开为链表 Rust实现
LeetCode 114. 二叉树展开为链表 — Rust 实现题目要求将二叉树原地展开为单链表顺序为先序遍历顺序用right指针充当链表的next。思路一迭代推荐O(1)O(1)O(1)额外空间Rust 的所有权模型处理递归改树比较繁琐迭代法反而是最顺手的写法对当前节点若存在左子树找到左子树的最右节点将右子树挂到它后面再把左子树移到右边。usestd::rc::Rc;usestd::cell::RefCell;implSolution{pubfnflatten(root:mutOptionRcRefCellTreeNode){letmutcurrroot.clone();whileletSome(node)curr{let(mutleft,right){letmutbnode.borrow_mut();(b.left.take(),b.right.take())};ifleft.is_some(){// 找到左子树的最右节点letmutpredleft.clone();loop{letnextpred.as_ref().unwrap().borrow().right.clone();matchnext{Some(r)predSome(r),Nonebreak,}}// 将右子树接到左子树最右节点之后pred.unwrap().borrow_mut().rightright;// 左子树移到右边node.borrow_mut().rightleft;}else{node.borrow_mut().rightright;}// 移动到下一个节点currnode.borrow().right.clone();}}}时间复杂度O(n)空间复杂度O(1)无递归栈思路二递归反向先序遍历利用先序的逆序右 → 左 → 根用共享可变状态记录前驱节点usestd::rc::Rc;usestd::cell::RefCell;implSolution{pubfnflatten(root:mutOptionRcRefCellTreeNode){fndfs(node:OptionRcRefCellTreeNode,prev:mutOptionRcRefCellTreeNode){ifletSome(n)node{let(left,right){letmutbn.borrow_mut();(b.left.take(),b.right.take())};dfs(right,prev);// 先处理右子树dfs(left,prev);// 再处理左子树letmutbn.borrow_mut();b.rightprev.take();// 接到已处理好的链表头部b.leftNone;*prevSome(n.clone());}}letmutprevNone;dfs(root,mutprev);}}时间复杂度O(n)空间复杂度O(h)递归栈深度Rust 实现要点RefCell 双规则borrow_mut()拿写引用前确保之前借用已释放上面的代码都用块作用域let (left, right) { ... }及时释放否则运行时会 panicalready mutably borrowed。take()技巧b.left.take()把字段取出并留下None避免手动mem::replace是 Rust 树操作的标准手法。Rc 共享所有权 LeetCode 的 Rust 树节点是RcRefCellTreeNode克隆Rc只是增加引用计数是廉价操作。不要边borrow_mut边递归递归调用可能再次访问同一节点造成双重借用所以先取出子树释放借用再递归——上面两个写法都遵循这个模式。示例[1,2,5,3,4,null,6]展开为1 → 2 → 3 → 4 → 5 → 6✅

相关新闻

Hermes Agent 调教实录(三):AI Agent 记忆粒度与归属实测——SOUL 配置骨架与验证动作

Hermes Agent 调教实录(三):AI Agent 记忆粒度与归属实测——SOUL 配置骨架与验证动作

/* 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 22:46:45 阅读更多 →
VsCode 前端常用快捷键:用 TaoToken 统一 Key 打通 AI 补全配置

VsCode 前端常用快捷键:用 TaoToken 统一 Key 打通 AI 补全配置

/* 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 22:46:45 阅读更多 →
【Unity UGUI源码深度分析】08|RawImage源码解析:纹理显示、UV裁切与Image的本质差异

【Unity UGUI源码深度分析】08|RawImage源码解析:纹理显示、UV裁切与Image的本质差异

《UGUI源码深度解析》第 8 篇 界面小组工作日志 基准:Unity 2022.3.62f2c1 / 本地 UGUI 1.0.0。 人物与项目情节为虚构;源码机制以本地实现为准。 一、预览相机送来的不是Sprite 阿澈给装备详情加了一台预览相机,要把旋转中的武器显示在背包右侧。我习惯性地选中 Image,随…

2026/9/27 22:46:45 阅读更多 →

最新新闻

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

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

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

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

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

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

2026/9/27 23:36:18 阅读更多 →
YuE2 零样本翻唱实战:把一段录音做成爵士版

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&…

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

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

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

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

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

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

2026/9/27 23:36:18 阅读更多 →
信用风险建模实战:Lasso特征筛选与GBDT违约预测

信用风险建模实战:Lasso特征筛选与GBDT违约预测

简介:围绕债券违约预测研究提供完整复现方案,面向金融量化分析、机器学习初学者及信用风险研究人员。基于2017年7月17日前债券违约事件与宏观流动性数据构建数据集,采用Lasso回归筛选特征,对比带L2惩罚项的逻辑回归、SVM、神经网络…

2026/9/27 23:35:18 阅读更多 →

日新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/27 0:00:34 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/27 0:00:34 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/27 0:00:34 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/27 0:00:34 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/27 0:00:34 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/27 0:00:34 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/27 9:12:14 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/25 20:29:31 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/26 22:52:30 阅读更多 →