二叉树----14.二叉树的最近公共祖先

C#的GDI+绘图详解 /消除锯齿 或 AntiAlias。// 1.在窗体或控件的Paint事件中,用PaintEventArgs e 创建绘图对象 ---- 控件或窗体重绘时。//为控件创建绘图对象。//--------------------以上方法三选一。//2.创建绘图对象 panel1中绘图。 阅读详情

本题链接

/**

            找到给定节点 p q 的最近公共祖先

            后序遍历先找到目标节点,再回溯逐层向上返回。

            若左右子树返回值都不为空:

                                    则说明两目标节点在当前节点两侧;;;返回当前节点即可

            若左子树与右子树其中一个为空:

                                    则说明另一个节点未找到或都在left的子树中;;;返回left即可,反之返回right

           

            若当前节点为目标节点之一:(已包含在终止条件中)

                                    则说明另一个节点在别的方向或当前目标节点为另一个目标节点的父节                                            点直接返回即可

*/

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
        /**
            找到给定节点 p q 的最近公共祖先
            后序遍历先找到目标节点,再回溯逐层向上返回。

            若左右子树返回值都不为空:
                                    则说明两目标节点在当前节点两侧;;;返回当前节点即可
            若左子树与右子树其中一个为空:
                                    则说明另一个节点未找到或都在left的子树中;;;返回left即可,反之返回right
            
            若当前节点为目标节点之一:(已包含在终止条件中)
                                    则说明另一个节点在别的方向或当前目标节点为另一个目标节点的父节点,直接返回即可
        */

        return getLCA(root,p,q);
       
    }

    private TreeNode getLCA(TreeNode root, TreeNode p, TreeNode q) {
         if(root == null || root == p || root == q) { //root不为null;说明另一个节点在别的方向或当前目标节点为另一个目标节点的父节点,直接返回即可
            return root;
        }
        
        //后序遍历
        TreeNode left = getLCA(root.left, p, q);
        TreeNode right = getLCA(root.right, p, q);

        //回溯 判断
        if(left != null && right != null) { //说明两目标节点在当前节点两侧; 返回当前节点即可
            return root;             
        }

        if(left != null && right == null) { //说明另一个节点未找到或都在left的子树中;;;返回left即可,反之返回right
            return left;
        } else {
            return right;
        }
    }
}

SEGGER Embedded Studio初体验 先楫HPM5E00EVK开发环境搭建 阅读详情

相关推荐

基于51单片机+SYN6288语音播报

51单片机控制SYN6288语音播报资料SYN6288模块原理图语音合成命令接线如何接线实现原理程序代码main.csyn6288.cuart.cdelay.c基于 51单片机的其他项目基于51单片机+遥控灯基于51单片机+LCD1602显示基于51单片机+红外遥控解码+LCD1602显示基于51单片机+DHT11温湿度+LCD1602显示基于51单片机+DS18B20温度测温器+LCD1602显示尾声 资料 我用的是绿深电子技术的模块,资料也挺齐全的。也有相关例程。 SYN6288模块原理图 语音合成

weixin_47457689的博客 3万+

LeetCode打卡14——二叉树的最近公共祖先

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

qq_39894692的博客 189

基于大模型的重度膝关节骨关节炎全流程预测与治疗方案研究

本研究基于大模型构建了重度膝关节骨关节炎(KOA)预测体系,涵盖术前风险预测、手术方案优化、术中监测和术后康复指导全流程。通过分析临床和影像数据,模型在手术风险预测准确率(85%)、并发症预警(血栓预测准确率88%)等方面显著优于传统方法。研究实现了临床数据与AI技术的深度融合,术前预测指导麻醉选择(如高危患者推荐椎管内麻醉),术中实时监测生命体征,术后个性化康复方案使患者HSS评分平均提升45分。

嵌入式毕设/课设资料清单(速查手册·文档模板·题库,持续更新)→ 见最新文章 1390

Leetcode Day14——二叉树的最近公共祖先

1.Description 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 2.Example 3.Code class Solution: def lowestCommon...

F_MILK_的博客 232

BitLocker加密盘解密实战:从隐藏分区到密钥恢复的全过程

本文深入探讨了BitLocker加密盘在密钥丢失或遗忘情况下的解密实战方法。文章系统性地介绍了从理解加密机制、制作取证镜像,到深度扫描隐藏分区、分析内存转储寻找密钥残留,最终利用恢复密钥解锁加密卷的全过程。重点剖析了非标准恢复路径,为数据恢复和数字取证工作提供了专业的技术框架和实战思路。

weixin_29268385的博客 336

华为Atlas 300I推理卡驱动安装全攻略:从环境检查到常见问题解决

本文提供了华为Atlas 300I推理卡驱动安装的完整实战指南。从安装前的系统环境检查、内核版本匹配,到详细的二进制.run文件安装步骤、源码编译及高级定制化部署,涵盖了驱动安装的全流程。文章重点解析了安装过程中的关键决策、常见问题排查与解决方案,并针对生产环境的多卡配置、性能调优及安全加固给出了专业建议,旨在帮助用户高效、稳定地完成AI推理加速卡的部署。

swift5iosmith的博客 629

二叉搜索树 最近共同祖先 c++_Task 14. 树:236. 二叉树的最近公共祖先

Task 14. 树:236. 二叉树的最近公共祖先二叉树的最近公共祖先 - 力扣(LeetCode)​leetcode-cn.com题目描述:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如...

weixin_39943442的博客 59

常见js手撕题及算法总结

设计一个lazyMan,实现以下功能: LazyMan(‘Tony’); // Hi I am Tony LazyMan(‘Tony’).sleep(10).eat(‘lunch’); // Hi I am Tony // 等待了10秒… // I am eating lunch LazyMan(‘Tony’).eat(‘lunch’).sleep(10).eat(‘dinner’); // H...

没有名字适合我的博客 3177

刷题记录(回顾)二叉树-26 HOT100-14:236. 二叉树的最近公共祖先

难度:中等给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(3节点5和节点1的最近公共祖先是节点3。5节点5和节点4的最近公共祖先是节点5。因为根据定义最近公共祖先节点可以为节点本身。1[2, 105]Node.val互不相同p!= qpq。

weixin_44610684的博客 515

deepstream车道线检测自定义插件化,其中要注意pipeline的配置,如果插件位置配置不对,会报input format should be RGBA when using blur-obje

以上代码中,我们先从对象池中获取一个 DsUserMeta 对象,然后使用 get_lane_line_from_frame 函数获取车道线检测结果,并使用 add_lane_line_meta 函数将其添加到 DsUserMeta 对象中。注意,上述代码中的 get_lane_line_from_frame 函数和 add_lane_line_meta 函数需要你自己实现,用于从视频帧中提取车道线检测结果,并将其添加到 DsUserMeta 中。

pvmsmfchcs的博客 690

第七天 Labview进阶(7.2 与汇川PLC通信)

运行环境: Labview 2020 Autoshop v4.10.1.1 该文档中包括Labview程序和汇川PLC程序,可以完美实现Labview与汇川PLC的通信。具体的使用教程可以参考本人的相关文章,讲解详尽,请尽情享用!

weixin_38637405的博客 3529

面试经典 150 题 14 —(二叉树)— 236. 二叉树的最近公共祖先

【代码】面试经典 150 题 14 —(二叉树)— 236. 二叉树的最近公共祖先。

BreezeChasingDrizzle 76

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

2020第12-14周练习——7-3 顺序存储的二叉树的最近的公共祖先问题 (20分)

设顺序存储的二叉树中有编号为i和j的两个结点,请设计算法求出它们最近的公共祖先结点的编号和值。 输入格式: 输入第1行给出正整数n(≤1000),即顺序存储的最大容量;第2行给出n个非负整数,其间以空格分隔。其中0代表二叉树中的空结点(如果第1个结点为0,则代表一棵空树);第3行给出一对结点编号i和j。 题目保证输入正确对应一棵二叉树,且1≤i,j≤n。 输出格式: 如果i或j对应的是空结点,则输出ERROR: T[x] is NULL,其中x是i或j中先发现错误的那个编号;否则在一行中输出编号为i和j的两

沃然 1202

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

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

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

力扣刷题Day 14:二叉树的最近公共祖先(236)

首先得找到p和q吧,可以递归先找p和q,找到之后往回溯,把路过的结点全部记录到列表里,最后比对两个列表。

qq_52643100的博客 247

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

代码随想录算法训练营第14天|530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236.二叉树的最近公共祖先

2023 年 3 月 15 日1h0m★\bigstar★★\bigstar★57243。

qq_43212651的博客 488

二叉树OJ题详细讲解

本文介绍了四个常见的二叉树算法问题及其Java实现: 相同的树:递归比较两棵树的节点值和左右子树是否相同; 另一棵树的子树:通过递归在主树中查找与子树结构相同的节点; 翻转二叉树:递归交换每个节点的左右子树; 平衡二叉树:计算子树高度差,判断是否满足平衡条件。每个问题都采用递归解法,时间复杂度多为O(n),空间复杂度为O(h)(h为树高)。文中提供了清晰的代码实现和逻辑分析,适合算法学习者参考。

深耕 Java 后端,沉淀技术知识,记录成长之路。 459

Java实现二叉树2

本文介绍了使用Java实现二叉树相关OJ题的解法,涵盖了多个经典题目。主要内容包括:判断两棵二叉树是否相同、判断子树、翻转二叉树、对称二叉树、平衡二叉树、二叉搜索树转双向链表、二叉树构建及遍历、最近公共祖先、根据遍历序列构造二叉树、二叉树字符串表示以及非递归实现前序/中序/后序遍历等。每个题目都提供了详细的思路分析和完整的Java代码实现,其中特别针对递归和迭代方法进行了对比和优化。文章通过14个具体例题,系统地讲解了二叉树的基本操作和常见算法,适合需要巩固二叉树相关算法知识的读者参考学习。

su17643217590的博客 5586

二叉树(3)通用工具函数 + 高频OJ面试题全汇总

二叉树所有算法底层都是递归拆分左右子树;遍历分为递归版(简单)、非递归栈版(面试常考);笔试分两大题型:计算类(第一篇)、遍历/代码类(第二、三篇);刷题顺序建议:先掌握遍历,再刷基础判断,最后做构造树、公共祖先等难题。

2501_93786094的博客 211

二叉树算法精讲:从基础到面试高频题解析

二叉树是计算机科学中最基础且重要的数据结构之一,采用节点与左右子节点的层次化存储结构。其核心原理在于递归定义与分治思想,通过前序、中序、后序和层序遍历等操作实现数据访问。在工程实践中,二叉树特别适合实现高效搜索(如BST)和层次化数据处理。算法面试中约70%的题目涉及二叉树,常考察DFS/BFS的应用、树结构操作等核心能力。代码随想录训练营Day14课程系统讲解了层序遍历模板等实战技巧,而二叉搜索树的中序有序特性等热词概念,更是解题的关键突破口。掌握这些基础原理后,可应对从最大深度计算到序列化反序列化等各类

weixin_34221073的博客 391

找工作刷题记录_014二叉树&二叉搜索树最近的公共祖先

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

lizxchen 190

代码随想录算法训练营第二十天 | 235. 二叉搜索树的最近公共祖先 , 701.二叉搜索树中的插入操作 , 450.删除二叉搜索树中的节点

剩下的情况,就是cur节点在区间(p.val <= cur.val and cur.val <= q.val)或者 (q.val <= cur.val and cur.val <= p.val)中,那么cur就是最近公共祖先了,直接返回cur。将删除节点(元素7)的左孩子放到删除节点(元素7)的右子树的最左面节点(元素8)的左孩子上,就是把5为根节点的子树移到了8的左孩子的位置。动画中的二叉搜索树中,删除元素7, 那么删除节点(元素7)的左孩子就是5,删除节点(元素7)的右子树的最左面节点是元素8。

懒羊羊在努力的博客 1312

习题4.5 顺序存储的二叉树的最近的公共祖先问题 (25分)

设顺序存储的二叉树中有编号为i和j的两个结点,请设计算法求出它们最近的公共祖先结点的编号和值。 输入格式: 输入第1行给出正整数n(≤1000),即顺序存储的最大容量;第2行给出n个非负整数,其间以空格分隔。其中0代表二叉树中的空结点(如果第1个结点为0,则代表一棵空树);第3行给出一对结点编号i和j。 题目保证输入正确对应一棵二叉树,且1≤i,j≤n。 输出格式: 如果i或j对应的是空结点,则输出ERROR: T[x] is NULL,其中x是i或j中先发现错误的那个编号;否则在一行中输出编号为i和j的两

Agroy4712的博客 947

代码随想录算法训练营第十八天|530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先

代码随想录文章讲解代码随想录文章讲解代码随想录文章讲解今天一部分的训练还是针对二叉搜索树的,在解决二叉搜索树的问题:1.一般用中序遍历 2. 要利用二叉搜索树的特性,采用中序遍历的话,节点值是单调递增的,因此可以采用将节点值保存在数组中然后解题;也可以采用递归+双指针的思路解题,解题过程中要注意代码处理的技巧(比如二叉搜索树众数的解题过程中我们需要清空结果数组的这个逻辑)。

qq_39981702的博客 847

代码随想录训练营 Day20打卡 二叉树 part07 235. 二叉搜索树的最近公共祖先 701. 二叉搜索树中的插入操作 450. 删除二叉搜索树中的节点

代码随想录训练营 Day20打卡 二叉树 part07 235. 二叉搜索树的最近公共祖先 701. 二叉搜索树中的插入操作 450. 删除二叉搜索树中的节点

qq_42952637的博客 1187

代码随想录算法训练营第二十天|235. 二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点

中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(要在二叉搜索树(BST)中插入一个新的值,我们可以利用二叉搜索树的性质:左子树中的所有节点值都小于根节点,右子树中的所有节点值都大于根节点。例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]要在二叉搜索树中找到两个节点的最近公共祖先,可以利用二叉搜索树的性质:对于任何节点。的值,可以确定最近公共祖先的位置。

xiaowutongxue666的博客 856

二叉树探索篇Ⅳ

给你一个二叉搜索树的根节点root,返回。差值是一个正数,其数值等于两值之差的绝对值。1。

ch_ah的博客 941
上一篇: 二叉树----13.路径总和 III
下一篇: Redis----缓存设计、旁路缓存优化
码破苍穹ovo
博客等级 码龄2年 377粉丝 114原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值