原题链接:https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-search-tree/
class Solution {
public:
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
if(max(p->val,q->val) < root->val)//都比根结点小,递归左子树
{
lowestCommonAncestor(root->left,p,q);
}
else if(min(p->val,q->val) > root->val)//都比根节点大,递归右子树
{
lowestCommonAncestor(root->right,p,q);
}
else
{
return root;
}
}
};
思路分析:
1)p,q都比root小,递归左子树;
2)p,q都比root大,递归右子树;
3)否则,直接输出root;(即p,q中有一个比root大,另一个比root小,或者p,q中有一个是与root相等的);