class Solution {
public:
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
if(root == nullptr || root == p || root == q) return root;
//递归左右子树,因为是递归,使用函数后可认为左右子树已经算出结果,用 left 和 right 表示
TreeNode *left = lowestCommonAncestor(root->left, p, q);
TreeNode *right = lowestCommonAncestor(root->right, p, q);
if(left == nullptr) return right;//此时若left为空,那最终结果只要看 right
if(right == nullptr) return left;//若 right 为空,那最终结果只要看 left
return root;
}
};