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

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

示例 1:

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

示例 2:

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

示例 3:

输入:root = [1,2], p = 1, q = 2
输出:1
class Solution:def lowestCommonAncestor(self,root:'TreeNode',p:'TreeNode',q:'TreeNode')->'TreeNode':if not root or root == p or root == q:return rootleft = self.lowestCommonAncestor(root.left)right = self.lowestCommonAncestor(root.right)if not left and not right:return Noneelif left and not right:return leftelif right and not left:return rightreturn root

[leetcode] 68.二叉树的最近公共祖先相关推荐

  1. 力扣(LeetCode)236. 二叉树的最近公共祖先(C语言)

    一.环境说明 本文是 LeetCode 236. 二叉树的最近公共祖先,使用c语言实现. 递归. 测试环境:Visual Studio 2019. 二.代码展示 精简代码: struct TreeNo ...

  2. LeetCode 1676. 二叉树的最近公共祖先 IV

    文章目录 1. 题目 2. 解题 1. 题目 给定一棵二叉树的根节点 root 和 TreeNode 类对象的数组(列表) nodes,返回 nodes 中所有节点的最近公共祖先(LCA). 数组(列 ...

  3. leetcode 236. 二叉树的最近公共祖先 递归解法 c语言

    如题: 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先.百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个结点 x, 满足 x 是 p.q ...

  4. LeetCode 236. 二叉树的最近公共祖先

    文章目录 解法1:保存祖先节点+逐个判断 解法2:深度优先遍历 解法3:记录祖先节点 https://leetcode-cn.com/problems/lowest-common-ancestor-o ...

  5. 最近公共祖先_[LeetCode] 236. 二叉树的最近公共祖先

    题目链接: https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-tree 难度:中等 通过率:57.2% 题目描述: ...

  6. LeetCode 1650. 二叉树的最近公共祖先 III(哈希)

    文章目录 1. 题目 2. 解题 1. 题目 给定一棵二叉树中的两个节点 p 和 q,返回它们的最近公共祖先节点(LCA). 每个节点都包含其父节点的引用(指针).Node 的定义如下: class ...

  7. LeetCode 1644. 二叉树的最近公共祖先 II

    文章目录 1. 题目 2. 解题 1. 题目 给定一棵二叉树的根节点 root,返回给定节点 p 和 q 的最近公共祖先(LCA)节点. 如果 p 或 q 之一不存在于该二叉树中,返回 null. 树 ...

  8. leetcode 236. 二叉树的最近公共祖先LCA(后序遍历,回溯)

    LCA(Least Common Ancestors),即最近公共祖先,是指在有根树中,找出某两个结点u和v最近的公共祖先. 题目描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先.百度百科 ...

  9. Leetcode 236.二叉树的最近公共祖先

    Time: 20190907 Type: Medium 题目描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p. ...

最新文章

  1. qt LNK2019 无法解析的外部符号
  2. MySQL datetime类型字段的毫秒四舍五入
  3. 作业1--求100内的奇数。
  4. PAT甲级1125 Chain the Ropes:[C++题解]贪心、优先队列、合并果子
  5. 我的奔腾B50 MT豪华版 典雅灰 – 验车篇
  6. mysql进阶,03-事务2-多个客户端一起操作时的情况
  7. Failed to execute request because the App-Domain could not be created
  8. hpux系统启动中被某个服务hang住的解决办法
  9. java学习软件_刚学习java,用哪些学习软件比较好?
  10. python做数据挖掘_python 数据挖掘
  11. 微服务的战争:按什么维度拆分服务
  12. 前端后端程序员必备的Linux基础知识
  13. 痞子衡嵌入式:盘点国内Cortex-M内核MCU厂商高性能产品
  14. Java 使用jsoup下载网页内容到本地
  15. 这些SQL调优小技巧,你学废了吗?
  16. html点击展开盒子变大,JS实现点击按钮控制Div变宽、增高及调整背景色的方法
  17. 无与伦比的工业设计 iPhone 4详细评测
  18. JAVA电商秒杀实战(三)
  19. linux下c的串口收发
  20. Android程序简历这样写,拿到offer的几率提升80%

热门文章

  1. 并发环境下,先操作数据库还是先操作缓存?
  2. Kafka最全面试题整理|划重点要考
  3. 力扣--让字符串成为回文串的最少插入次数
  4. 【今晚7点半】:现代C++和Mediasoup的WebRTC集群服务实践
  5. QUIC协议的演进之路
  6. 测试:将手机摄像头用作网络摄像头的拍摄效果
  7. Facebook如何将QUIC应用于数十亿流量传输
  8. 机器学习在ABR算法中的应用纵览
  9. Xilinx:让FFmpeg在FPGA上玩的爽
  10. ffplay命令汇总