#P4066. 二叉树的最近公共祖先

二叉树的最近公共祖先

题目内容

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

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

输入描述

第一行包含二叉树的序列化数组,节点值之间用空格隔开,空节点用null表示。 第二行包含两个整数,表示节点 pp 和节点 qq 的值。

输出描述

输出最近公共祖先节点的值。

样例1

img

输入

3 5 1 6 2 0 8 null null 7 4
5 1

输出

说明

节点 55 和节点 11 的最近公共祖先是节点 33

样例2

img

输入

3 5 1 6 2 0 8 null null 7 4
5 4

输出

样例3

输入

1 2
1 2

输出

提示

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