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

百度百科中最近公共祖先的定义为:“对于有根树 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

提示:

  • 树中节点数目在范围 [2, 105] 内。
  • -109 <= Node.val <= 109
  • 所有 Node.val 互不相同
  • p != q
  • p 和 q 均存在于给定的二叉树中。

递归解法

class Solution:def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode':if root==None or root==p or root==q:return rootleft = self.lowestCommonAncestor(root.left,p,q)right = self.lowestCommonAncestor(root.right,p,q)if left==None:return rightelif right==None:return leftreturn root

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

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

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

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

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

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

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

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

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

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

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

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

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

  7. leetcode 236. 二叉树的最近公共祖先 思考分析

    目录 题目 思考分析 改进 本文章代码思路来源于公众号[代码随想录] 题目 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个 ...

  8. LeetCode 236. 二叉树的最近公共祖先(递归)

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

  9. 【LeetCode】【HOT】236. 二叉树的最近公共祖先(递归)

    [LeetCode][HOT]236. 二叉树的最近公共祖先 文章目录 [LeetCode][HOT]236. 二叉树的最近公共祖先 package hot;class TreeNode{int va ...

最新文章

  1. Opencv实现透视形变
  2. C语言函数集(十二)
  3. linux编程综合案例
  4. oracle 10 升级补丁
  5. Android Button Example-onClickListener-Intent
  6. 专访黄翀:东方航空到底用MongoDB做了什么,技术选型为何花落MongoDB?
  7. java 判断date为空_java – 如何检查JSONArray元素是否为空
  8. 基于JAVA+SpringMVC+Mybatis+MYSQL的族谱管理系统
  9. 2万字总结《MybatisPlus—为简化开发而生》
  10. nodeJS笔记参考菜鸟教程
  11. 3D优化之ShadowGun系列一:旗子飘扬效果实现方法及shader注解
  12. python画围棋棋盘_Python语言程序设计之二--用turtle库画围棋棋盘和正、余弦函数图形...
  13. 汽车发动机号码编码规则
  14. 关于Echarts官网httpsecharts.apache.org打不开的解决方案
  15. 计算机图形学复习笔记
  16. Python-illegal multibyte sequence
  17. 什么是物联网网关及其主要特点
  18. 计算机辅助设计绘图员四级,计算机辅助设计绘图员-标准及考试大纲.pdf
  19. 2018年全国多校算法寒假训练营练习比赛(第二场)H 了断局
  20. TL431及其常用电路

热门文章

  1. 作为程序员,这些实用工具你必须要知道!
  2. 我们凭什么相信 5G 很安全?
  3. Java集合框架:HashMap
  4. 音视频出海,如何乘风破浪?
  5. AWS发布低延迟互动直播服务
  6. 如何搭建低延时、交互式的在线教育平台?(内附视频回放)
  7. InfoQ专访:人工智能时代,什么才是你的最大竞争力?
  8. C++之TR1::function
  9. mybatis实现动态sql语句
  10. Why docker command need sudo? | 为什么运行docker命令需要sudo?