您的当前位置:首页LeetCode:236. Lowest Common Ancestor of a Binary Tree( 二叉树的最近公共祖先)

LeetCode:236. Lowest Common Ancestor of a Binary Tree( 二叉树的最近公共祖先)

来源:锐游网

class Solution {
public:
    TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
        if(root==NULL){
            return root;
        }
        //找到p或者q就返回。
        if(root->val==q->val || root->val==p->val){
            return root;
        }
        TreeNode * left=lowestCommonAncestor(root->left,p,q);
        TreeNode * right=lowestCommonAncestor(root->right,p,q);
        //因为他们的值是没有重复的,如果在左右子树都找到了值,说明该root就是他们最近的公共祖先
        if(left!=NULL && right!=NULL){
            return root;
        }
        //因为最终p和q都会找到,但是其中一个是空的,所以另一个一定是他们的公共子节点。
        if(left==NULL){
            return right;
        }
        return left;
    }
};

因篇幅问题不能全部显示,请点此查看更多更全内容

Top