class Solution {
  public:
    int target;
    bool fl = false;
    int dfs(TreeNode* root, int p, int q) {
        if (root == nullptr)return 0;
        int cnt = dfs(root->left, p, q) + dfs(root->right, p, q);
        if (root->val == p || root->val == q)cnt++;
        if (cnt == 2 && !fl)target = root->val, fl = true;
        return cnt;
    }
    int lowestCommonAncestor(TreeNode* root, int o1, int o2) {
        target = root->val;
        dfs(root, o1, o2);
        return target;
    }
};