广州模板网站建设费用外贸服装网

张小明 2026/3/12 5:38:47
广州模板网站建设费用,外贸服装网,官网首页,怎样用word2003做网站文章目录摘要描述题解答案#xff08;核心思路#xff09;为什么普通二叉树和 BST 不一样#xff1f;BST 的关键点本题采用的策略题解代码#xff08;Swift 可运行 Demo#xff09;题解代码分析1. 为什么用前序遍历#xff1f;2. serialize 的核心逻辑3. deserialize 的核…文章目录摘要描述题解答案核心思路为什么普通二叉树和 BST 不一样BST 的关键点本题采用的策略题解代码Swift 可运行 Demo题解代码分析1. 为什么用前序遍历2. serialize 的核心逻辑3. deserialize 的核心逻辑4. 为什么不需要回退 index示例测试及结果时间复杂度空间复杂度总结摘要「序列化和反序列化二叉搜索树」这道题表面上是在考二叉树其实真正的考点在于你有没有真正理解 BSTBinary Search Tree的性质。如果把它当成普通二叉树去做确实可以用层序遍历加上null占位来解决但那样字符串会很长也完全没有利用 BST 的特性。而题目特意强调了一句编码的字符串应尽可能紧凑。这其实是在暗示BST 是可以只靠遍历顺序恢复出来的。这篇文章会从实际业务场景聊起解释为什么 BST 可以被“无损压缩”再一步步带你用 Swift 写出一套简洁、高效、可运行的解法。描述题目要求我们设计一套算法用来把一棵二叉搜索树序列化成字符串再从这个字符串中反序列化恢复成原来的 BST有几个关键限制条件输入保证一定是一棵 BST节点值范围是合法整数节点数量最多 10⁴序列化字符串要尽量紧凑BST 有一个非常重要的性质左子树所有节点值 根节点右子树所有节点值 根节点这条规则是我们能“少存信息、还能完整还原”的关键。题解答案核心思路为什么普通二叉树和 BST 不一样如果是普通二叉树你只存前序遍历是没法还原结构的比如1 \ 2和1 / 2前序遍历都是[1,2]结构信息丢失了。但 BST 不一样。BST 的关键点只要你知道遍历顺序比如前序BST 的大小关系规则那么不用存 null也能恢复结构。本题采用的策略序列化使用前序遍历root → left → right只记录节点值用逗号拼成字符串反序列化根据 BST 的区间规则递归构建每个节点值都必须落在合法区间(min, max)内一次遍历即可还原整棵树这样做的好处是字符串非常紧凑时间和空间效率都很高思路清晰代码不复杂题解代码Swift 可运行 Demo下面是完整可运行的 Swift 示例包括TreeNode定义和测试代码。importFoundationpublicclassTreeNode{publicvarval:Intpublicvarleft:TreeNode?publicvarright:TreeNode?publicinit(_val:Int){self.valvalself.leftnilself.rightnil}}classCodec{// MARK: - Serializefuncserialize(_root:TreeNode?)-String{varresult:[String][]funcpreorder(_node:TreeNode?){guardletnodenodeelse{return}result.append(String(node.val))preorder(node.left)preorder(node.right)}preorder(root)returnresult.joined(separator:,)}// MARK: - Deserializefuncdeserialize(_data:String)-TreeNode?{ifdata.isEmpty{returnnil}varvaluesdata.split(separator:,).map{Int($0)!}varindex0funcbuild(_min:Int,_max:Int)-TreeNode?{ifindexvalues.count{returnnil}letvalvalues[index]ifvalmin||valmax{returnnil}index1letnodeTreeNode(val)node.leftbuild(min,val)node.rightbuild(val,max)returnnode}returnbuild(Int.min,Int.max)}}题解代码分析1. 为什么用前序遍历前序遍历的第一个节点一定是根节点这对构建树非常友好。BST 的前序遍历有一个隐含规律一段连续小于 root 的值一定属于左子树后面大于 root 的值一定属于右子树结合区间限制我们就能精准判断一个值“该不该被消费”。2. serialize 的核心逻辑funcpreorder(_node:TreeNode?){guardletnodenodeelse{return}result.append(String(node.val))preorder(node.left)preorder(node.right)}这里非常直接不存 null不加多余符号单纯记录节点值这也是字符串“足够紧凑”的关键原因。3. deserialize 的核心逻辑funcbuild(_min:Int,_max:Int)-TreeNode?这是整个算法的精髓。含义是当前子树中合法节点值必须在(min, max)区间内如果当前值不在区间内说明它属于别的子树直接返回 nil如果合法就创建节点并递归构建左右子树因为index是全局递增的所以每个节点只会被处理一次。4. 为什么不需要回退 index这是很多人一开始想不通的点。原因在于前序遍历是严格的「根 → 左 → 右」一旦某个值不在当前区间它一定属于后续的右子树或祖先节点所以不能消费就不动 index这是 BST 性质带来的好处。示例测试及结果我们用示例一来跑一遍letcodecCodec()letrootTreeNode(2)root.leftTreeNode(1)root.rightTreeNode(3)letdatacodec.serialize(root)print(序列化结果:,data)letnewRootcodec.deserialize(data)print(反序列化完成根节点:,newRoot?.val??-1)输出结果序列化结果: 2,1,3 反序列化完成根节点: 2对于空树print(codec.serialize(nil))// print(codec.deserialize()nil)// true结果也是符合预期的。时间复杂度序列化每个节点访问一次O(n)反序列化每个节点构建一次O(n)总体时间复杂度O(n)空间复杂度序列化字符串占 O(n)递归调用栈最坏 O(n)退化成链表总体空间复杂度O(n)总结LeetCode 449 是一道非常经典的「理解型」题目。它并不难写但非常考察你是否真正理解了BST 的结构特性遍历顺序和树结构之间的关系如何用“约束条件”减少冗余数据
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

代理行业门户网站宠物网站建设论文

在 SAP 系统里,Client(客户端、租户)不是一个单纯的登录参数,它更像是一道“逻辑防火墙”:同一套应用服务器与数据库里跑着多套业务数据,大家共享基础设施,但不该互相“串门”。这套隔离能力就是 Client Isolation,而开发者日常写的 ABAP SQL、CDS、AMDP、Gateway、RAP…

张小明 2026/3/5 6:07:00 网站建设

深圳品牌学校网站建设网站建设的公司合肥

本白皮书由镜像视界(浙江)科技有限公司基于其在空间视频智能感知、多源信息融合与空间态势管控领域的长期技术研究与工程实践编制完成。白皮书面向高安全关键设施这一典型复杂应用场景,系统阐述以空间态势感知为核心能力、以多源信息融合为技…

张小明 2026/3/5 6:07:03 网站建设

一级a做爰片免费网站丶刚开始做写手上什么网站

网络安全校招:3 类入门岗位薪资 技能要求,清晰对标 2025 年网络安全人才缺口已突破 150 万,北京、深圳等城市企业甚至开出 “应届生年薪 30 万 ” 的高薪抢人。但对高校应届生而言,“岗位类型繁杂、技能要求模糊” 往往成为求职路…

张小明 2026/3/10 9:06:50 网站建设

站长工具浪潮绍兴手机网站制作

Qwen3-8B批量推理实战:Pipeline高效应用 在当前AI模型部署的现实场景中,一个核心矛盾日益凸显:我们既希望使用性能强大的大语言模型来提供高质量服务,又受限于有限的硬件资源和成本预算。尤其对于中小企业、初创团队或个人开发者而…

张小明 2026/3/5 6:07:04 网站建设

企业官网建设_创意网站建设网站的盈利模式

型号介绍今天我要向大家介绍的是 Texas Instruments 的一款混频器——LMX2581ESQX/NOPB。 它集成了Δ-Σ分数N锁相环 (PLL)、多核压控振荡器 (VCO)、可编程输出分频器和两个差分输出缓冲器。VCO 的频率范围为 1880 至 3800 MHz,可直接发送至输出缓冲器,也…

张小明 2026/3/5 6:07:04 网站建设

mooc网站开发案例美橙互联

第一章:R Shiny多源数据接入的核心挑战在构建现代数据驱动的交互式应用时,R Shiny 常需整合来自多种来源的数据,例如数据库、API 接口、本地文件及云端存储。这种多源数据接入虽提升了应用的灵活性,但也带来了若干核心挑战。数据格…

张小明 2026/3/5 6:07:05 网站建设