当前位置: 首页 > news >正文

LeetCode二叉树的公共祖先

题目链接

LeetCode二叉树的公共祖先

 

题目描述 

 

 

 思路解析:

ps:我这里看的是灵神的递归解题思路,我觉得很好理解;

关键思路拆解

  1. 关键思路拆解

    • 终止条件的设计
      当递归遇到null(没找到)或直接遇到p/q时,返回当前节点。这一步的意义是:

      • 若找到pq,则将其向上传递作为 “候选祖先”;
      • 若没找到(返回null),则表示当前子树中没有pq
    • 递归的本质
      算法通过递归深入左右子树,本质是后序遍历:先探索完所有子节点,再通过返回值判断当前节点是否为公共祖先。

    • 公共祖先的判定

      • 若左子树返回非空(找到一个节点),右子树也返回非空(找到另一个节点),说明pq分别在当前节点的两侧,因此当前节点就是最近公共祖先。
      • 若只有左子树返回非空,说明pq都在左子树中,左子树的返回结果就是它们的公共祖先(可能是其中一个节点本身,或更深层的公共祖先)。
      • 同理,若只有右子树返回非空,结果为右子树的返回值。

 

完整代码: 

疑难点: 

:lowestCommonAncestor 函数的返回值是什么意思?

:返回值的准确含义是最近公共祖先的候选项」。对于最外层的递归调用者来说,返回值是最近公共祖先的意思。但是,在递归过程中,返回值可能是最近公共祖先,也可能是空节点(表示子树内没找到任何有用信息)、节点 p 或者节点 q(可能成为最近公共祖先,或者用来辅助判断上面的某个节点是否为最近公共祖先)。

:为什么发现当前节点是 p 或者 q 就不再往下递归了?万一下面有 q 或者 p 呢?

:如果下面有 q 或者 p,那么当前节点就是最近公共祖先,直接返回当前节点。如果下面没有 q 和 p,那既然都没有要找的节点了,也不需要递归,直接返回当前节点。

 

示例说明(以普通二叉树为例)

假设有如下二叉树,求p=4q=5的最近公共祖先:

 

  • 递归遍历左子树(5 的子树)时,会找到54,因此左子树返回5
  • 递归遍历右子树(1 的子树)时,未找到54,返回null
  • 因此当前节点3的左子树非空、右子树为空,最终返回左子树的结果5(即45的最近公共祖先是5)。

算法特点

  • 时间复杂度:O (n),其中 n 是二叉树的节点数。每个节点最多被访问一次。
  • 空间复杂度:O (h),其中 h 是二叉树的高度。递归栈的深度取决于树的高度(最坏情况为链状树,h=n)。
  • 适用场景:任意二叉树(无需依赖节点值的大小关系,与二叉搜索树的 LCA 算法不同)。

 

灵神YYDS!!! 

 

 

 

 

 

 

 

 

http://www.dtcms.com/a/294674.html

相关文章:

  • #Linux内存管理# 详细介绍使用mmap函数创立共享文件映射的工作原理
  • 篇四 tcp,udp客户端服务器编程模型
  • [Linux入门] Linux 文件系统与日志分析入门指南
  • 欢迎咨询年度规划2025
  • 第二阶段-第二章—8天Python从入门到精通【itheima】-136节(Python操作MySQL的基础使用)
  • C++ 多态全解析:静态多态与动态多态详解
  • Packmol聚合物通道模型建模方法
  • OpenCV 图像预处理:颜色操作与灰度、二值化处理详解
  • 最长递增子序列(LIS)问题详解
  • 0723 单项链表
  • FreeRTOS学习笔记之调度机制
  • MySQL 8.0 OCP 1Z0-908 题目解析(34)
  • 打造你的AI助手:Sim Studio 开源工作流构建工具
  • 鸿蒙应用开发:使用Navigation组件和Tab组件实现首页tab选项卡及子页跳转功能
  • 第一次实习经历
  • Java——Spring中Bean配置核心规则:id、name、ref的用法与区别
  • freqtrade在docker运行一个dryrun实例
  • 内容梳理|新手体会大模型AI接口调用
  • EDoF-ToF: extended depth of field time-of-flight imaging解读, OE 2021
  • 《WebGL打造高性能3D粒子特效系统:从0到1的技术探秘》
  • AR维修辅助系统UI设计:虚实融合界面中的故障标注与操作引导
  • nginx.conf配置文件以及指令详解
  • 暑期自学嵌入式——Day06(C语言阶段)
  • 红松推出国内首个银发AI播客产品,首创“边听边问”交互体验
  • 5.综合案例 案例演示
  • [硬件电路-76]:无论是波长还是时间,还是能量维度来看,频率越高,越走进微观世界,微观世界的影响越大;频率越低,越走进宏观世界,微观世界的影响越小;
  • 销采一体化客户管理系统核心要点速通
  • IDEA202403 超好用设置【持续更新】
  • SAP第二季度利润大增但云业务疲软,股价承压下跌
  • 【笔记】Handy Multi-Agent Tutorial 第三章: CAMEL框架简介及实践(实践部分)