# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

#
# 
# @param root TreeNode类 
# @param o1 int整型 
# @param o2 int整型 
# @return int整型
import copy
class Solution:
    li = []
    def lowestCommonAncestor(self , root , o1 , o2 ):
        # write code here
        if self.find(root, o1):
            self.li.append(root.val)
            l1 = copy.copy(self.li)
            self.li.clear()
        if self.find(root, o2):
            self.li.append(root.val)
            l2 = copy.copy(self.li)
            self.li
        val = None
        while l1 and l2:
            v1 = l1.pop()
            v2 = l2.pop()
            if v1 != v2:
                return val
            val = v1
        return val

    def find(self, root, o):
        if root.val == o:
            return True
        if root.left:
            if self.find(root.left, o):
                self.li.append(root.left.val)
                return True
        if root.right:
            if self.find(root.right, o):
                self.li.append(root.right.val)
                return True
        return False