做一个公司的网站怎么做呢小程序搭建需要什么

张小明 2026/1/19 20:35:51
做一个公司的网站怎么做呢,小程序搭建需要什么,学习网页设计与制作的网站,网页制作怎么做横条导航栏目录 一、LeetCode 236. 普通二叉树的最近公共祖先 1. 核心思想#xff1a;后序遍历 递归分治#xff08;验证式遍历#xff09; 2. 完整实现代码 3. 重点 难点 重点#xff1a;递归返回值的 “信号含义”#xff08;核心#xff01;#xff09; 难点#…目录一、LeetCode 236. 普通二叉树的最近公共祖先1. 核心思想后序遍历 递归分治验证式遍历2. 完整实现代码3. 重点 难点重点递归返回值的 “信号含义”核心难点4. 深度分析二、LeetCode 235. 二叉搜索树BST的最近公共祖先1. 核心思想有序性预判 单向递归预判式遍历2. 完整实现代码3. 重点 难点重点BST 有序性带来的 “剪枝” 优化难点4. 深度分析三、两道题的核心对比四、通用易错点总结1. 236 题高频易错点2. 235 题高频易错点3. 通用易错点五、深度总结最近公共祖先LCA是二叉树领域的经典高频题LeetCode 236普通二叉树的 LCA和 235二叉搜索树 BST 的 LCA是同类型但解法差异极大的两道题 —— 核心差异源于 BST 的 “数值有序性”235 可通过有序性 “预判 LCA 位置” 实现单向递归剪枝236 无特性可利用只能通过 “后序遍历 递归分治” 验证子树存在性。以下从核心思路、实现、重难点、深度分析等维度全面总结。一、LeetCode 236. 普通二叉树的最近公共祖先1. 核心思想后序遍历 递归分治验证式遍历普通二叉树无 “有序性” 等特殊性质无法预判 LCA 位置因此采用后序遍历的递归分治先子后根递归终止条件遇到空节点返回 null子树无 p/q、遇到 p/q返回自身找到目标节点信号传递递归左、右子树获取 “左子树是否找到 p/q”“右子树是否找到 p/q” 的信号分治合并根据左右子树的信号判断当前节点是否为 LCA。2. 完整实现代码class Solution { public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { // 终止条件1空节点子树无p/q返回null if (root null) return null; // 终止条件2找到p/q自身是祖先返回自身 if (root p || root q) return root; // 后序遍历先处理左、右子树获取信号 TreeNode left lowestCommonAncestor(root.left, p, q); TreeNode right lowestCommonAncestor(root.right, p, q); // 分治合并逻辑 if (left ! null right ! null) return root; // 左右都找到→当前是LCA return left ! null ? left : right; // 单侧找到/都没找到题目保证存在后者仅子树出现 } }3. 重点 难点重点递归返回值的 “信号含义”核心递归返回值不是直接返回 LCA而是 “当前子树是否存在 p/q” 的信号返回值含义null当前子树既无 p 也无 qp/q当前子树仅找到 p 或仅找到 q非 p/q 的节点当前子树同时找到 p 和 q当前节点是 LCA难点为什么必须用后序遍历只有先获取左、右子树的 “找到信号”才能判断当前节点是否是 LCA—— 前序 / 中序遍历无法完成 “子树信号合并”这是递归逻辑的唯一选择。容易混淆 “返回 p/q” 和 “返回 LCA”递归到 p 节点时返回 p不是因为 p 是 LCA而是告诉上层 “这侧找到了 p”只有当左右子树都返回非 null 时才确定当前节点是 LCA。4. 深度分析时间复杂度O (n)n 为节点数。普通二叉树无特性最坏情况斜树需遍历所有节点空间复杂度O (h)h 为树高。递归调用栈深度 树高平衡树 hlogn斜树 hn核心逻辑本质“自底向上” 的信号传递 —— 底层子树的 “找到信号” 向上汇总直到某一层节点满足 “左右都找到”该节点就是 LCA。二、LeetCode 235. 二叉搜索树BST的最近公共祖先1. 核心思想有序性预判 单向递归预判式遍历BST 的核心特性是 “左子树所有节点 根 右子树所有节点”因此可通过数值比较直接预判 LCA 位置无需遍历整棵树若 p、q 都 root.valLCA 在左子树→仅递归左子树若 p、q 都 root.valLCA 在右子树→仅递归右子树其他情况p≤root≤q 或 q≤root≤p或 rootp/q当前 root 就是 LCA→直接返回递归终止。2. 完整实现代码class Solution { public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { // 情况1p/q都在左子树→递归左 if (p.val root.val q.val root.val) { return lowestCommonAncestor(root.left, p, q); } // 情况2p/q都在右子树→递归右 else if (p.val root.val q.val root.val) { return lowestCommonAncestor(root.right, p, q); } // 情况3其余情况→当前root是LCA else { return root; } } }3. 重点 难点重点BST 有序性带来的 “剪枝” 优化普通二叉树是 “验证式遍历”遍历子树验证是否存在 p/q而 BST 是 “预判式遍历”通过数值比较直接定位 LCA 路径遍历范围从 “整棵树” 缩减为 “根到 LCA 的单条路径”时间复杂度从 O (n) 降至 O (h)平衡 BST 下 O (logn)。难点隐性的递归终止条件题目保证 p/q 存在因此递归不会遍历到空节点终止条件藏在 “情况 3” 中返回 root新手易冗余添加if (root null) return null该判断无性能收益永远不触发仅提升工程健壮性。“其他情况” 的覆盖范围不仅包含 “p/q 分属左右子树”还包含 “root 是 p/q 其中一个”节点可作为自身的祖先漏考虑后者会导致逻辑错误。4. 深度分析时间复杂度O (h)h 为树高。仅遍历根到 LCA 的路径无无效节点访问空间复杂度O (h)递归栈深度 路径长度迭代版优化避免递归栈溢出class Solution { public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { while (true) { if (p.val root.val q.val root.val) root root.left; else if (p.val root.val q.val root.val) root root.right; else return root; } } }三、两道题的核心对比维度LeetCode 236普通二叉树LeetCode 235BST核心思路后序遍历 递归分治验证存在性有序性预判 单向递归定位位置递归终止条件显式rootnull /rootp/q隐性情况 3 返回 root遍历范围整棵树最坏 O (n)根到 LCA 的路径O (h)关键依赖仅依赖二叉树递归结构依赖 BST 的数值有序性核心分支逻辑合并左、右子树信号3 种情况数值比较预判方向3 种情况代码复杂度中等需理解信号传递简单仅数值比较四、通用易错点总结1. 236 题高频易错点误解递归返回值把 “返回 p/q” 当成 “返回 LCA”忽略 “信号传递” 的本质遗漏root null终止条件递归到空节点的子节点触发空指针异常分支逻辑错误把 “左右都非 null 返回 root” 写成 “返回 left/right”导致 LCA 判断错误忽略 “节点可作为自身祖先”比如 p 是 q 的祖先时直接返回 p 即可无需继续递归。2. 235 题高频易错点冗余添加root null判断题目保证 p/q 存在该判断永远不触发无性能收益数值比较逻辑错误把 “p/q 都 root” 写成 “proot || qroot”应为 导致递归方向错误混淆 “节点值” 和 “节点引用”直接比较root p而非root.val p.val题目中 p/q 是节点对象需比较值漏考虑 “root 是 p/q” 的场景仅判断 “p/q 分属左右”导致根节点为目标节点时返回错误。3. 通用易错点对 LCA 定义的误解忽略 “节点可作为自身的后代”这是两道题的核心定义前提递归栈溢出风险斜树场景下 hn递归深度过大可改用迭代版优化236 迭代版需记录父节点235 迭代版更简单。五、深度总结LCA 问题的解题本质是 “利用树的结构 / 特性最小化遍历范围”普通二叉树无特殊特性只能通过 “后序遍历 信号传递” 验证子树存在性是 “无特性时的通用解法”BST 的有序性提供了 “数值预判” 的可能将遍历范围从整棵树缩减到单条路径是 “数据结构特性驱动算法优化” 的典型案例面试中这两道题常作为 “递进式提问”先问 235BST再追问 236普通二叉树核心考察 “是否能利用数据结构特性简化算法”“是否理解递归的信号传递逻辑”。天气️
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站怎么换模板企业网站建立流程

如何用 v-scale-screen 实现高清不模糊的前端缩放?一文讲透关键技巧 你有没有遇到过这样的问题:明明设计稿做得清清楚楚,UI还原度也拉满,但一放到大屏上,文字边缘发虚、图标模糊,像被“美颜”了一样&…

张小明 2026/1/17 16:01:20 网站建设

在线简历制作网站免费怎么注册app软件

❤ 写在前面 如果觉得对你有帮助的话,点个小❤❤ 吧,你的支持是对我最大的鼓励~ 个人独立开发wx小程序,感谢支持!前言:为什么需要数组去重? 想象一下,你正在整理一个装满各种颜色袜子的抽屉。你…

张小明 2026/1/17 16:01:22 网站建设

湖南平台网站建设方案申请免费个人网站空间

FaceFusion支持多GPU并行处理:大幅提升批处理效率 在影视后期、短视频创作和AI内容生成(AIGC)日益普及的今天,人脸替换技术正从“小众实验”走向“工业化生产”。一个曾经需要数小时甚至数天才能完成的1080p视频换脸任务&#xff…

张小明 2026/1/17 16:01:22 网站建设

建设网站号码是多少景区门户网站建设的必要性

LangFlow支持的LangChain组件清单及使用示例 在大语言模型(LLM)迅速渗透各行各业的今天,越来越多团队希望快速构建智能问答、知识库助手或自动化代理系统。然而,直接基于 LangChain 编写代码往往意味着要处理复杂的链式结构、提示…

张小明 2026/1/17 16:01:24 网站建设

做网站分辨率多少网站建设访问人群

ChanlunX缠论插件实战指南:从技术原理到量化交易应用 【免费下载链接】ChanlunX 缠中说禅炒股缠论可视化插件 项目地址: https://gitcode.com/gh_mirrors/ch/ChanlunX ChanlunX是一款基于缠中说禅理论的可视化分析插件,通过智能化的技术手段将复杂…

张小明 2026/1/17 16:01:25 网站建设

湖州市城市建设档案馆网站wordpress评论后显示不出来

Qwen3-VL在STEM数学推理中的表现:多模态因果分析与逻辑证据生成 在今天的智能教育场景中,一个学生拍下一道带几何图的数学题,上传到学习平台,几秒后不仅得到了正确答案,还收到了一份清晰的解题过程——从“已知ABAC”出…

张小明 2026/1/19 0:04:16 网站建设