python3,递归。
所谓最近公共祖先,就是刚好分左右子树可以找到两个点。非最近(更高的)公共祖先,只能在某一边子树中找到两个点。
class Solution:
    # 所谓最近公共祖先,就是刚好分左右子树可以找到两个点。非最近公共祖先,只能在某一边子树中找到两个点。
    def lowestCommonAncestor(self , root: TreeNode, o1: int, o2: int) -> int:
        # 该子树没找到,返回-1
        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