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

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

百度百科中最近公共祖先的定义为:"对于有根树 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
  • pq 均存在于给定的二叉树中。
相关推荐
闪电麦坤952 分钟前
数据结构:树(Tree)
数据结构
DARLING Zero two♡6 分钟前
C++效率掌握之STL库:map && set底层剖析及迭代器万字详解
c++·stl·set·map
绯樱殇雪15 分钟前
编程题 02-线性结构3 Reversing Linked List【PAT】
c++·pat考试
Rachelhi36 分钟前
C++.神经网络与深度学习(赶工版)(会二次修改)
c++·深度学习·神经网络
Inverse16237 分钟前
C语言_自定义类型:结构体
c语言·开发语言·算法
Musennn1 小时前
102. 二叉树的层序遍历详解:队列操作与层级分组的核心逻辑
java·数据结构·算法·leetcode
越来越无动于衷1 小时前
java数组题(5)
java·算法
理论最高的吻1 小时前
77. 组合【 力扣(LeetCode) 】
c++·算法·leetcode·深度优先·剪枝·回溯法
学习中的码虫1 小时前
c 中的哈希表
数据结构·哈希算法·散列表
zyx没烦恼1 小时前
unordered_map和unordered的介绍和使用
开发语言·c++