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;
}
};
因篇幅问题不能全部显示,请点此查看更多更全内容