class Solution {
public:
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
if(root == NULL)
return NULL;
if(root == p || root == q)
return root;
TreeNode* left = lowestCommonAncestor(root->left, p, q);
TreeNode* right = lowestCommonAncestor(root->right, p, q);
if(left == NULL && right !=NULL)
return right;
if(right == NULL && left != NULL)
return left;
if(left !=NULL && right !=NULL) // p和q在两侧
return root;
return NULL; // 必须有返回值
}
};