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

leetcode思路-236 二叉树的最近公共祖先

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

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

思路:

递归解析:
终止条件:
当越过叶节点,则直接返回 null ;
当 root 等于 p,q ,则直接返回 root ;
递推工作:
开启递归左子节点,返回值记为 left ;
开启递归右子节点,返回值记为 right ;
返回值: 根据 left 和 right ,可展开为四种情况;
当 left 和 right 同时为空 :说明 root 的左 / 右子树中都不包含 p,q ,返回 null ;
当 left 和 right 同时不为空 :说明 p,q 分列在 root 的 异侧 (分别在 左 / 右子树),因此 root 为最近公共祖先,返回 root ;
当 left 为空 ,right 不为空 :p,q 都不在 root 的左子树中,直接返回 right 。具体可分为两种情况:
p,q 其中一个在 root 的 右子树 中,此时 right 指向 p(假设为 p );
p,q 两节点都在 root 的 右子树 中,此时的 right 指向 最近公共祖先节点 ;
当 left 不为空 , right 为空 :与情况 3. 同理;

public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { if(root == null || root == p||root == q){ return root; } TreeNode left = lowestCommonAncestor(root.left,p,q); TreeNode right = lowestCommonAncestor(root.right,p,q); if(left == null){ return right; } if(right == null){ return left; } return root; }
http://www.jsqmd.com/news/861989/

相关文章:

  • 最常见的漏洞有哪些?如何发现存在的漏洞呢
  • 分布式团队的代码协作规范:从分支策略到提交信息格式
  • 联想拯救者工具箱终极指南:释放游戏本性能的免费开源神器
  • 模块化机房建设解决方案
  • Cell Host Microbe | 西奈山伊坎医学院房刚团队揭示肠道微生物的表观遗传“押注对冲“策略
  • 同层排水45°和90°弯头,怎么使用才能避免堵塞、返水......
  • 用Claude Code做了一件事,现在AI比我还了解我?
  • 别再叠加加载了!一文讲透GB4053.2钢斜梯有限元分析,90%的人都搞错了!
  • 嘉立创EDA:原理图到PCB学习总结
  • Skillhub网站
  • 忙碌”幻觉:你以为在推进项目,其实只是在逃避
  • 全球石墨纤维粉市场分析与行业发展趋势
  • 对比直接使用厂商API与通过Taotoken调用的体验差异
  • 告别被封号!这款30项检测全过的“隐形浏览器”火了
  • 短波通讯:魔术6米波
  • 通宵降AI率?10款降AI工具亲测:哪个神器一次过,哪个白花钱
  • Redis——list相关指令
  • MCPMarket(MCP 市场)
  • 婚庆策划品牌选型全攻略:成都一站式婚庆策划公司电话/成都专业婚庆公司电话/成都专业婚庆策划公司电话/成都婚庆策划公司电话/选择指南 - 优质品牌商家
  • AI电商助手项目策划书(Demo版)
  • CVPR 2026 预讲会54位讲者云集| 6大方向+5个专场
  • 如何用AI做出可以赚钱的网站
  • AI犯了错没人追责,工程师犯了错丢饭碗?
  • 永久免费的国产模型
  • 2026广州酒楼回收选型推荐:广州附近上门回收空调/广州餐饮厨具饭店回收/广州餐饮设备回收/避坑与合规实操要点 - 优质品牌商家
  • 别再盲目上 Agent 了!大厂面试官最爱问的工程陷阱
  • 探索C/C++程序从源码到可执行文件的编译之旅
  • 今年的就业环境,离谱!!!
  • 2026年5月天津五粮液回收机构权威度实测评测 - 优质品牌商家
  • 13. 模块系统