输入:root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8
输出:6
解释:树的形状如下
输入:root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 4
输出:2
解释:树的形状如下
问题解法
树是二叉搜索树,可以充分利用这个特点进行搜索,如果 p 和 q 在根节点的左右两边或其中一个节点是根节点,那么这两个节点的最近公共祖先就是根节点,如果 p 和 q 的值都小于根节点的值,那么其最近公共祖先就在左子树中,此时递归搜索左子树即可,如果 p 和 q 的值都大于根节点的值,那么其最近公共祖先就在右子树中,此时递归搜索右子树即可。代码如下