leetcode235.(二叉搜索树)最近公共祖先

此题比236简单之处在于可以充分利用二叉搜索树的特性,当p和root的差值和q和root的差值符号相异,说明p q肯定在root的两个不同子树中,最近公共祖先就是root。当p q两个结点值都小于根节点时,递归左子树,反之递归右子树。

class Solution {
public:
    TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
        if((p->val - root->val) * (q->val - root->val) <= 0) return root;
        else if(p->val < root->val && q->val < root->val){
            return lowestCommonAncestor(root->left, p, q);
        } else {
            return lowestCommonAncestor(root->right, p, q);
        }     
	}
};

你可能感兴趣的:(leetcode)