Leetcode 235. 二叉搜索树的最近公共祖先

LeetCode - #235 二叉搜索树的最近公共祖先 我们社区陆续会将顾毅(Netflix 增长黑客,《iOS 面试之道》作者,ACE 职业健身教练。)的 Swift 算法题题解整理为文字版以方便大家学习与阅读。LeetCode 算法到目前我们已经更新到 234 期,我们会保持更新时间和进度(周一、周三、周五早上 9:00 发布),每期的内容不多,我们希望大家可以在上班路上阅读,长久积累会有很大提升。不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。难度水平:中等。 阅读详情

给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。

百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”

例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]

示例 1:

输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8
输出: 6
解释: 节点 2 和节点 8 的最近公共祖先是 6。
示例 2:

输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 4
输出: 2
解释: 节点 2 和节点 4 的最近公共祖先是 2, 因为根据定义最近公共祖先节点可以为节点本身。

tips:从根节点开始往下遍历,
若p,q都比根节点的值小,则从根节点的左节点开始往下遍历
若p,q都比根节点的值大,则从根节点的右节点开始往下遍历

class Solution {
public:
    TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
        TreeNode* node=root;
        while(node!=NULL) {
            if(node->val>p->val && node->val>q->val) {
                node = node->left;
            } else if(node->val<p->val && node->val<q->val) {
                node = node->right;
            } else {
                return node;
            }
        }
        return nullptr;
    }
};
持续集成介绍及Jenkins自动化测试部署 学习持续集成及jenkins的自动化测试部署 阅读详情

相关推荐

AI Agent Harness Engineering 监控与日志系统搭建

在生成式AI(Generative AI)与大语言模型(LLM)普及的今天,AI Agent(自主智能代理)已经成为了继「LLM API调用」「单轮/多轮对话」之后的第三代AI应用范式——Agent能够自主感知环境、制定多步决策、调用外部工具(Web搜索、数据库、RAG检索、企业系统API等)、执行复杂任务并优化自身策略。然而,随着Agent应用从Demo原型快速落地到企业生产环境,一系列与工程化落地强绑定的可观测性(Observability)问题正在成为Agent项目成功上线、稳定运行的最大瓶颈。

AI开发架构师 184

7-5 二叉搜索树的最近公共祖先 离散化后用数组存树

给定一棵二叉搜索树的先序遍历序列,要求你找出任意两结点的最近公共祖先结点(简称 LCA)。 输入格式: 输入的第一行给出两个正整数:待查询的结点对数 M(≤ 1 000)和二叉搜索树中结点个数 N(≤ 10 000)。随后一行给出 N 个不同的整数,为二叉搜索树的先序遍历序列。最后 M 行,每行给出一对整数键值 U 和 V。所有键值都在整型int范围内。 输出格式: 对每一对给定的 U 和 V,如果找到 A 是它们的最近公共祖先结点的键值,则在一行中输出 LCA of U and V is A.。但如果 U

wow_awsl_qwq的博客 1236

基于STM32的智能台灯PWM调光与人体感应融合设计

本文详细介绍了基于STM32单片机的智能台灯设计方案,重点讲解了PWM调光技术与人体感应模块的融合实现。通过STM32的高级定时器产生精准PWM信号控制LED亮度,结合红外传感器实现人来灯亮、人走灯灭的智能体验,同时集成光敏传感实现环境自适应调光,打造高效节能的智能照明解决方案。

threejs5artist的博客 822

7-6 二叉搜索树的最近公共祖先 (30 分)

给定一棵二叉搜索树的先序遍历序列,要求你找出任意两结点的最近公共祖先结点(简称 LCA)。 输入格式: 输入的第一行给出两个正整数:待查询的结点对数 M(≤ 1 000)和二叉搜索树中结点个数 N(≤ 10 000)。随后一行给出 N 个不同的整数,为二叉搜索树的先序遍历序列。最后 M 行,每行给出一对整数键值 U 和 V。所有键值都在整型int范围内。 输出格式: 对每一对给定的 U 和 V,如果找到 A 是它们的最近公共祖先结点的键值,则在一行中输出 LCA of U and V is A.。但如果 U

xxxibgdrgn博客 3019

generate for与always内for:Verilog循环的静态生成与动态执行之辨

本文深入解析Verilog中generate for与always内部for循环的核心差异。generate for使用genvar变量在编译时静态生成硬件结构,适用于模块实例化;always内部for使用整型变量在运行时动态执行,综合为并行逻辑。理解这两种循环的适用场景和综合结果对提升数字电路设计质量至关重要。

yog99的博客 1085

最新测算源码PHP算命源码-风水八字-八字起名-塔罗牌占卜

未来,随着技术的发展和用户需求的变化,我们可以继续对系统进行升级和优化,以满足更多用户的需求和期望。数据库设计:创建一个名为bazi的数据库表,包含以下字段:id(自增ID)、name(姓名)、sex(性别)、birth_date(出生日期)、birth_time(出生时间)、bazi(八字结果)。数据库设计:创建一个包含塔罗牌信息的数据库表,如tarot_cards,包含字段:id(塔罗牌ID)、name(塔罗牌名称)、meaning(塔罗牌含义)等。根据操作系统的不同,PHP的安装方法会有所不同。

shanbeizi的博客 2417

LeetCode二叉树系列——235.二叉搜索树的最近公共祖先

给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉搜索树: root =[6,2,8,0,4,7,9,null,null,3,5] ......

w20001118的博客 1309

026、传感器校准:加速度计校准

本文详细介绍了无人机飞控系统中加速度计的校准方法。作者从一次炸机事故引入,强调加速度计校准的重要性。文章首先解释了加速度计测量原理和误差来源,包括零偏、尺度因子和交叉轴耦合。重点介绍了两种校准方法:六位置法利用重力作为参考,操作简单但精度有限;椭球拟合通过采集大量数据点进行最小二乘拟合,精度更高但实现复杂。文章还指出温度补偿这一常被忽视的关键因素,并分享了实际调试中的经验教训,包括采样时长、安装误差、验证方法等。最后建议初学者从六位置法入手,逐步优化校准精度,强调良好的校准是飞控性能的基础。

2401_88858637的博客 44

二叉树:找出两个节点的最近公共祖先

一、问题描述 给定二叉树(不是二叉搜索树)和两个节点 n1 和 n2,编程实现找到二者的最近公共祖先(Lowest Common Ancestor,LCA)。 二、思路分析 LCA定义:最近公共祖先是两个节点所有公共祖先中离根节点最远的节点。从根开始遍历树,如果任一给定节点(n1和n2)与根匹配,则根为 LCA。如果根与任何节点都不匹配,重复左右子树中寻找节点 n1 和 n2。如果在其左子树中存在一个节点而在右子树中存在的另一个节点,则此节点即为 LCA。如果两个节点都位于左子树中,则 LCA 也位于左子

ChineseSoftware的博客 5789

MobileViT替换YOLOv11主干网络:轻量化新思路-(用MobileViT等轻量视觉Transformer降低计算成本)

在计算机视觉领域,目标检测一直是核心任务之一,而YOLO(You Only Look Once)系列算法因其出色的速度-精度平衡成为工业界和学术界的热门选择。随着YOLOv11的推出,模型性能达到了新的高度,但其计算复杂度和参数量也随之增加,这对资源受限的移动设备和嵌入式系统提出了挑战。与此同时,视觉Transformer(ViT)的出现为计算机视觉带来了全新范式,但其庞大的计算需求限制了在移动端的应用。MobileViT作为一种创新的轻量级视觉Transformer架构,巧妙结合了CNN的归纳偏置优势和V

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1646

【深度学习驱动流体力学】完整配置安装 OpenFOAM 及其所需的ThirdParty与QT5工具

针对以上文件及文件目录介绍其功能特性:Allclean:这是一个脚本或命令,通常用于清理(即删除)所有编译生成的临时文件和目标文件。执行后,可以将编译过程中生成的中间文件和已编译的程序删除,以便重新开始编译或者清理空间。Allwmake:这是一个脚本或命令,用于编译并安装ThirdParty-10目录中的所有软件包。执行此命令会遍历所有子目录,编译其中的软件包并将它们安装到指定位置。这是一个脚本或命令,用于编译和安装Libccmio库。

源代码杀手的博客 1997

面试题68:二叉搜索树的最近公共祖先

面试题68:二叉搜索树的最近公共祖先 (1)给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 // 二叉搜索树! class Solution { public: TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) { if(p->val > q->val) // 保证p<val < q->val { T

m0_56077202的博客 729

什么是 Agent 的 Context Window?为什么它是 Agent 工程中最核心的约束之一?

什么是 Agent 的 Context Window?为什么它是 Agent 工程中最核心的约束之一?

我哎GIS博客 814

【中等】力扣算法题解析LeetCode235:二叉搜索树的最近公共祖先

题目要求在二叉搜索树中找到两个指定节点的最近公共祖先(LCA)。利用二叉搜索树的性质,通过比较节点值区间,从根节点开始迭代遍历:若当前节点值大于两者,向左搜索;若小于两者,向右搜索;否则当前节点即为LCA。Java实现通过循环优化空间复杂度至O(1),时间复杂度为O(h)。示例代码展示了如何高效定位LCA,提交结果验证了算法性能。 关键词:二叉搜索树、最近公共祖先、迭代优化、时间复杂度O(h)

ylumwd的博客 1352

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

LeetCode 235. 二叉搜索树的最近公共祖先

LeetCode 235. 二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,...

sdm12345的博客 449

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

LeetCode第235题_二叉搜索树的最近公共祖先

摘要:LeetCode第235题要求找出二叉搜索树中两个节点的最近公共祖先。利用二叉搜索树的特性(左子树值小于根,右子树值大于根),可通过迭代或递归方法高效解决。迭代法从根节点出发,根据节点值比较决定向左或向右移动,时间复杂度O(h);递归法同理,但空间复杂度O(h)。本文提供了C#、Python和C++的迭代与递归实现代码,适用于平衡树时性能更优。

qq_40263592的博客 835

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Leetcode-235. 二叉搜索树的最近公共祖先

Leetcode-235. 二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,...

WangXu__的博客 526

Leetcode235. 二叉搜索树的最近公共祖先

Leetcode235. 二叉搜索树的最近公共祖先 题目: 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,nu...

会流泪de鱼的博客 272

#力扣 LeetCode235. 二叉搜索树的最近公共祖先 @FDDLC

题目描述: 235. 二叉搜索树的最近公共祖先 - 力扣(LeetCode) (leetcode-cn.com) Java代码一: class Solution { //所有节点的值都是唯一的。 p、q 为不同节点且均存在于给定的二叉搜索树中。 TreeNode answer=null,p,q; public boolean ancestor_and_descendent(TreeNode a,TreeNode d){ //判断a、d是否是祖先与后代的关系 if.

LiuXingchang的博客 379

【day11】LeetCode(力扣)练习【1652.拆炸弹】【235. 二叉搜索树的最近公共祖先】【733. 图像渲染】

力扣刷题第十一天 今天刷【1652.拆炸弹】【235. 二叉搜索树的最近公共祖先】【733. 图像渲染】

ebb29bbe的博客 764

leetcode 235 二叉搜索树最近公共祖先

leetcode 235 二叉搜索树最近公共祖先 题目描述: 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。 解法一:自己的写法,贼傻 # Definition for a bina...

diaoqian7700的博客 173

LeetCode 235 二叉搜索树的最近公共祖先

LeetCode 235 二叉搜索树的最近公共祖先 题目链接 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5] 示例 1: 输入: root = [6,2,8,0,4,7,9,null,null,3,5]

旺崽的博客 2728

leetcode 235:二叉搜索树的最近公共祖先(python)

腾讯精选练习(50 题)Day44 || leetcode 235:二叉搜索树的最近公共祖先(python)

nanashi_F的博客 468

算法学习——LeetCode力扣二叉树篇7(236. 二叉树的最近公共祖先、235. 二叉搜索树的最近公共祖先、701. 二叉搜索树中的插入操作、450. 删除二叉搜索树中的节点)

算法学习——LeetCode力扣二叉树篇7(236. 二叉树的最近公共祖先、235. 二叉搜索树的最近公共祖先、701. 二叉搜索树中的插入操作、450. 删除二叉搜索树中的节点)

拉依达不拉跨的博客 1133

leetcode 235. 二叉搜索树的最近公共祖先(Java版,树形dp套路)

题目 原题地址:leetcode 235. 二叉搜索树的最近公共祖先 说明: 所有节点的值都是唯一的。 p、q 为不同节点且均存在于给定的二叉搜索树中。 题解 关于 树形dp 套路,可以参考我的另一篇博客:左神算法:找到二叉树中的最大搜索二叉子树(Java版) 下面简述本题思路: 首先,如何判断一个节点 head 是否是 p、q 的公共祖先?只需要用二分查找的方式,判断以 head 为头的树中是否包含 p、q 即可。 然后,如何找到“最近”的公共祖先?直观上看,最近的公共祖先,一定是所有的公共祖先中

寒泉 6万+

Leetcode235.二叉搜索树的最近公共祖先

如果在回溯算法中,或者后序遍历中,我们大部分时间是需要使用left和right存取数值并交给根节点进行处理的但是在面对一些已经知道具体顺序的树中,或者是前序遍历中,我们仅仅是进行查找数据,那么可以去使用单边遍历进行递归。

kyrieyu111的博客 208
上一篇: Leetcode 322. 零钱兑换
下一篇: Leetcode 543.二叉树的直径
wenkun97
博客等级 码龄10年 15粉丝 139原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值