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

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

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

  • 题目-中等难度
  • 示例
  • 1. dfs

题目-中等难度

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

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

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/summary-ranges
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

1. dfs

时间
52ms
击败 68.44%使用 Python 的用户
内存
24.04MB
击败 62.53%使用 Python 的用户

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = Noneclass Solution(object):def lowestCommonAncestor(self, root, p, q):""":type root: TreeNode:type p: TreeNode:type q: TreeNode:rtype: TreeNode"""# 如果节点不存在或者节点是两个指定节点之一, 返回节点if not root or root == p or root ==q:return root# 左递归left = self.lowestCommonAncestor(root.left,p,q)# 右递归right = self.lowestCommonAncestor(root.right,p,q)# 如果左右都不为空, 说明指定节点存在于当前节点下if left and right:return root# 其他情况,只存在于当前节点的左子树或者右子树return left if left else right
http://www.lryc.cn/news/163721.html

相关文章:

  • Git常见问题:git pull 和 git pull --rebase二者区别
  • 关于HarmonyOS元服务的主题演讲与合作签约
  • cache 学习
  • SSM - Springboot - MyBatis-Plus 全栈体系(六)
  • 【Flutter】引入网络图片时,提示:Failed host lookup: ‘[图片host]‘
  • Python基础教程:索引和切片
  • JVM基础面试题
  • 蓝桥杯官网填空题(平方末尾)
  • 深入探究数据结构与算法:构建强大编程基础
  • Android 自定义View之圆形进度条
  • 力扣(LeetCode)算法_C++——字母异位词分组
  • 【LeetCode-中等题】59. 螺旋矩阵 II
  • 错误: 找不到或无法加载主类 Main
  • 【云原生】Kubeadmin安装k8s集群
  • Java:Springboot和React中枚举值(数据字典)的使用
  • git撤回 不小心 commit 进去的文件
  • qt之movetothread理解
  • 深入剖析:垃圾回收你真的了解吗?
  • ue5 物理场的应用
  • 移动零00
  • go初识iris框架(四) -框架设置操作
  • python基础语法(二)
  • 从本地到Gitee:一步步学习文件上传及解决常见报错问题
  • idea2018修改大小写提示(敏感)信息
  • Quartz.Net调度框架简介
  • HarmonyOS/OpenHarmony(Stage模型)应用开发组合手势(一)连续识别
  • Redis --- 位图
  • 自然语言处理-词向量模型-Word2Vec
  • List知识总结
  • 代码随想录day32