给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。
百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”
**解题思路:二叉搜索树的最近公共祖先,还有一道题是求二叉树的公共祖先
1.二叉搜索树的最近公共祖先:因为二叉搜索树有一个特点,就是左子树的值都比根节点要小,右子树的值都比根节点要大;
而最近公共祖先的话:(1)如果一个在根节点的左,一个在根节点的右,那么祖先一定是根节点了;(2)如果同时都在根节点的左子树的话,久一直递归的去左子树去找(3)如果同时在根节点的右子树的话,久一直递归的去右子树去找
**
1.二叉搜索树的最近公共祖先
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {