我除了妙啊什么也不会

若 o1, o2 中一个等于 root.val,则 root 为公共祖先,不等于则递归左右子树
若左子树中不存在两节点,则公共祖先在右子树中
若右子树中不存在两节点,则公共祖先在左子树中
若左右子树中各有一个节点,则 root 为公共祖先\

代码如下:

class Solution:
    def lowestCommonAncestor(self , root: TreeNode, o1: int, o2: int) -> int:
        if not root:
            return -1
        
        if root.val == o1 or root.val == o2:
            return root.val
        
        left = self.lowestCommonAncestor(root.left, o1, o2)
        right = self.lowestCommonAncestor(root.right, o1, o2)
        
        if left == -1:
            return right
        if right == -1:
            return left
        
        return root.val

不想刷了,答案比我自己写的又少又对
开玩笑的怎么能不刷了呢