思路
递归的来解决,调用自己获得左子树的最近公共祖先,右子树的最近公共祖先
分情况返回最终结果。
代码
class Solution {
public:
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
if(root == NULL || 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 NULL;
else if(left != NULL && right != NULL)return root;
else return left != NULL ? left : right;
}
};