class Solution {
public:
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
if(!root) return NULL;
if(root->val<min(p->val, q->val)) return lowestCommonAncestor(root->right, p, q);
if(root->val>max(p->val, q->val)) return lowestCommonAncestor(root->left, p, q);
return root;
}
};
知识点
1. Binary Search Tree: left<root<right
2.如果根节点的值大于p和q之间的较大值,说明p和q都在左子树中,那么此时我们就进入根节点的左子节点继续递归,如果根节点小于p和q之间的较小值,说明p和q都在右子树中,那么此时我们就进入根节点的右子节点继续递归,如果都不是,则说明当前根节点就是最小共同父节点,直接返回即可 (复制粘贴,大神牛逼~)