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

DeepSeek LeetCode 107. 二叉树的层序遍历 II Rust实现

发布时间:2026/9/26 16:26:29 来源:云帆数科 栏目:资讯中心
DeepSeek    LeetCode 107. 二叉树的层序遍历 II Rust实现
LeetCode 107. 二叉树的层序遍历 II Rust 实现思路和 Python 版本一致先用 BFS 自顶向下逐层收集最后把结果整体反转得到自底向上的层序遍历。Rust 中需要处理 OptionRcRefCell 的所有权和借用问题队列使用 VecDeque。Rust 代码usestd::rc::Rc;usestd::cell::RefCell;usestd::collections::VecDeque;// Definition for a binary tree node.// #[derive(Debug, PartialEq, Eq)]// pub struct TreeNode {// pub val: i32,// pub left: OptionRcRefCellTreeNode,// pub right: OptionRcRefCellTreeNode,// }//// impl TreeNode {// #[inline]// pub fn new(val: i32) - Self {// TreeNode {// val,// left: None,// right: None,// }// }// }implSolution{pubfnlevel_order_bottom(root:OptionRcRefCellTreeNode)-VecVeci32{letmutres:VecVeci32Vec::new();ifroot.is_none(){returnres;}letmutqueue:VecDequeRcRefCellTreeNodeVecDeque::new();queue.push_back(root.unwrap());while!queue.is_empty(){letlevel_sizequeue.len();letmutlevelVec::with_capacity(level_size);for_in0..level_size{letnode_rcqueue.pop_front().unwrap();letnodenode_rc.borrow();level.push(node.val);// 克隆 Rc增加引用计数将子节点加入队列ifletSome(left)node.left.clone(){queue.push_back(left);}ifletSome(right)node.right.clone(){queue.push_back(right);}}res.push(level);}// 自底向上反转结果res.reverse();res}}关键点说明队列元素类型VecDequeRcRefCell。Rc 提供共享所有权RefCell 提供内部可变性虽然这里只读但树节点定义如此。借用与克隆从队列取出 Rc 后用 borrow() 获得 Ref 来读取 val。访问 left / right 时因为 node 是 Ref不能移动出字段所以用 .clone() 克隆 OptionRc…这只是增加 Rc 的引用计数开销很小。反转结果最后 res.reverse() 原地反转得到自底向上的顺序。复杂度分析项目 复杂度时间 O(n)每个节点入队出队一次空间 O(n)队列最大宽度 结果数组示例验证输入 3 / \ 9 20 / \ 15 7 BFS 自顶向下[[3], [9, 20], [15, 7]] 反转后 [[15, 7], [9, 20], [3]]另一种写法DFS 递归可选usestd::rc::Rc;usestd::cell::RefCell;implSolution{pubfnlevel_order_bottom(root:OptionRcRefCellTreeNode)-VecVeci32{letmutres:VecVeci32Vec::new();fndfs(node:OptionRcRefCellTreeNode,depth:usize,res:mutVecVeci32){ifletSome(n)node{letnn.borrow();ifdepthres.len(){res.push(Vec::new());}res[depth].push(n.val);dfs(n.left.as_ref(),depth1,res);dfs(n.right.as_ref(),depth1,res);}}dfs(root.as_ref(),0,mutres);res.reverse();res}}DFS 同样是 O(n) 时间但递归深度最坏为 O(n)实际刷题推荐 BFS。

相关推荐

2026年中国速冻设备行业发展现状与市场占有率及排名研究分析报告
2026年中国速冻设备行业发展现状与市场占有率及排名研究分析报告

2026年中国速冻设备行业发展现状与市场占有率及排名研究分析 近年来,国内食品加工、预制菜、生鲜冷链行业快速扩张,速冻设备作为冷链产业的核心装备,呈现出专业化、定制化、一体化的发展趋势,常州市常兴深冷科技有限公司作为国内专… · 2026/9/26 16:26:29

深圳南山胸部提升攻略:无需假体的形态复位项目选择参考
深圳南山胸部提升攻略:无需假体的形态复位项目选择参考

深圳南山胸部提升攻略:无需假体的形态复位项目选择参考最近不少深圳南山的求美者咨询无需假体的胸部提升相关问题,尤其是怎么筛选适配的医生、怎么判断项目是否适合自己,本文整理了相关科普内容供参考。求美者核心需求梳理很多有胸部提升需求… · 2026/9/26 16:26:23

Allegro绘制PCB时如何用TaoToken统一管理AI辅助配置
Allegro绘制PCB时如何用TaoToken统一管理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/26 16:26:17

2026百度网盘满速下载技巧:超越PanDownload的直链助手配置
2026百度网盘满速下载技巧:超越PanDownload的直链助手配置

面对急需使用的资料,看着屏幕上慢吞吞跳动的下载进度,任谁都会感到有些无可奈何。很多人在测试网速时发现测速数值明明很漂亮,但一转到具体的文件下载环节,实际速度却远远达不到预期。 在体验PanDown这样的文件处理工具时&#x… · 2026/9/26 16:55:55

个人AI探索学习记录之claudecode:WSL下node.js环境配置与TaoToken接入实践
个人AI探索学习记录之claudecode:WSL下node.js环境配置与TaoToken接入实践

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

神了!用 Claude Code Skill 让乔布斯、芒格、马斯克同时给你打工,这个开源 AI 项目太炸了
神了!用 Claude Code Skill 让乔布斯、芒格、马斯克同时给你打工,这个开源 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/26 16:55:49

微信爬虫实战:公众号历史文章采集与数据存储解析
微信爬虫实战:公众号历史文章采集与数据存储解析

简介:这是一份基于 Node.js 的微信爬虫项目源码,采用中间人代理方式拦截并解析微信 HTTPS 请求,用于抓取公众号历史文章链接及正文、阅读量、点赞量、在看数、评论等数据,适合需要批量采集公众号内容做数据分析或运营监控的开发者… · 2026/9/26 16:55:49

面试宝典:Oracle数据库cursor: pin S等待事件处理过程与TaoToken配置排查
面试宝典:Oracle数据库cursor: pin S等待事件处理过程与TaoToken配置排查

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

【AIGC】SuperMemory 实战:用 TaoToken 统一 Key 打通私人智能书签的 Chrome 插件配置
【AIGC】SuperMemory 实战:用 TaoToken 统一 Key 打通私人智能书签的 Chrome 插件配置

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

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21

OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置

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

向下兼容与向上兼容:接口设计中的兼容性策略与工程实践
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践

一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46

了解更多?预约专属演示

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

企业微信二维码