新闻详情

新闻详情

首页 / 资讯中心 / 详情

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

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

相关资讯

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

较早相关资讯

最新相关资讯

手把手教你本地接入 deepseek-v4-pro 模型:TaoToken 统一 Key 配置与 Cline 实战 2026/9/26 17:08:06

手把手教你本地接入 deepseek-v4-pro 模型:TaoToken 统一 Key 配置与 Cline 实战

/* 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 17:08:06

断网环境下用松鼠备份实现异步直播:现场通讯实战指南

1. 工程项目现场的通讯底牌:断网才是平常态到非洲工地的头一个月,我就把“断网环境”这四个字刻进了骨头里。我们项目部靠一台柴油发电机维持营地用电,唯一的 VSAT 卫星链路白天被工程调度、视频回传和数据上报占满,晚上八点之后才…

阅读更多 →
iPhone Duo双屏适配实战:布局策略、多窗口生命周期与状态管理 2026/9/26 17:08:06

iPhone Duo双屏适配实战:布局策略、多窗口生命周期与状态管理

1. 从单屏到双屏:iPhone Duo适配到底在解决什么问题第一次拿到iPhone Duo这类折叠/双屏形态的设备做适配时,很多开发者的第一反应是"不就是屏幕变宽了吗"。我一开始也这么想,结果真机一跑,问题全冒出来了:左…

阅读更多 →
Mac系统数据占用187GB?一文彻底清理磁盘空间实战指南 2026/9/26 17:08:06

Mac系统数据占用187GB?一文彻底清理磁盘空间实战指南

1. 从一次真实的磁盘告警说起 那天下午正编译着项目,Xcode 突然弹出一个磁盘空间不足的提示,我瞄了一眼关于本机,系统数据那一栏赫然写着 187GB。第一反应是 Time Machine 的本地快照堆积了,但清理完快照之后,系统数据…

阅读更多 →
BIN和TXT转换实战:用TaoToken统一Key打通配置文件与二进制互转脚本 2026/9/26 17:07:59

BIN和TXT转换实战:用TaoToken统一Key打通配置文件与二进制互转脚本

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

阅读更多 →
用LangGraph4j在Spring Boot中实现Multi-Agent Supervisor模式 2026/9/26 17:07:59

用LangGraph4j在Spring Boot中实现Multi-Agent Supervisor模式

最近在搞一个 Java 服务里的多智能体协作需求,需要在同一个进程里跑几个职责不同的 Agent,再由一个 Supervisor 统一调度、分配任务。最早我用 Python 版的 LangGraph 搭原型,逻辑很快跑通,但到了交付阶段,团队不想为一…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

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

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