题解 | #二叉搜索树的最近公共祖先#
二叉搜索树的最近公共祖先
https://www.nowcoder.com/practice/d9820119321945f588ed6a26f0a6991f
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param root TreeNode类
* @param p int整型
* @param q int整型
* @return int整型
*/
int lowestCommonAncestor(TreeNode* root, int p, int q) {
// write code here
if (p > q) swap(p, q); // 如果p权值大于q就交换pq,这样p一定比q小
if (p<= root->val && q>= root->val) return root->val; // 小于在左边 大的在右根节点为公共节点 另一种情况如pq和根节点相等就是p和q在根节点位置上就说明根节点是公共节点直接返回根节点
// 如果两个都在左子树那我们就递归左子树去找
if (q < root->val) return lowestCommonAncestor(root->left, p, q); // 递归左边
// 如果两个都在右子树那我们就递归右子树去找
return lowestCommonAncestor(root->right, p, q); // 递归右边
}
};
#二叉搜索树的最近公共祖先#