当前为游客只读模式。登录后可提交代码判题并保存草稿与进度。
练题计划 · 力扣 HOT 100
二叉树的最近公共祖先
中等lowestCommonAncestor()时间限制 2000 ms内存限制 128 MB复杂度要求 时间 O(n),空间 O(n)
二叉树的最近公共祖先
给定一个二叉树的根节点 root,以及树中的两个节点 p 和 q,找出该树中 p 和 q 的最近公共祖先(LCA)。
最近公共祖先的定义:对于树中的两个节点 p、q,最近公共祖先是指同时拥有 p 和 q 作为后代的最低节点(允许一个节点是它自己的后代)。
约定
p和q均存在于给定的二叉树中。p != q,且所有节点的值互不相同。- 返回的是从该祖先节点出发的整棵子树(序列化为层序数组)。
输入
root:二叉树根节点,用力扣层序数组表示,例如[3,5,1,6,2,0,8,null,null,7,4]p:目标节点,用单元素层序数组表示其值,例如[5]q:目标节点,用单元素层序数组表示其值,例如[1]
输出
最近公共祖先节点对应的层序数组(从该节点开始序列化整棵子树)。
示例一
输入:
root = [3,5,1,6,2,0,8,null,null,7,4], p = [5], q = [1]
输出:
[3,5,1,6,2,0,8,null,null,7,4]
解释:节点 5 和节点 1 的最近公共祖先是节点 3。
示例二
输入:
root = [3,5,1,6,2,0,8,null,null,7,4], p = [5], q = [4]
输出:
[5,6,2,null,null,7,4]
解释:节点 5 和节点 4 的最近公共祖先是节点 5(因为根据定义,一个节点可以是它自己的后代)。
示例三
输入:
root = [1,2], p = [1], q = [2]
输出:
[1,2]
平台变体说明
在力扣原题中,p 和 q 是 root 树中的真实节点引用。本平台通过数组分别独立构建 root、p、q 三个对象,因此 p、q 与 root 树中的节点不是同一个对象引用。参考解据此改为按节点值匹配目标节点(题目保证树中所有值互不相同,因此值比较是确定且正确的)。
Loading...
输入
[[3,5,1,6,2,0,8,null,null,7,4],[5],[1]]
预期输出
[3,5,1,6,2,0,8,null,null,7,4]