# 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整型
#
class Solution:
def lowestCommonAncestor(self , root , o1 , o2 ):
queue = []
output = []
queue.append(root)
output.append(root)
while(len(queue) != 0):
if queue[0] != '#':
if queue[0].left != None:
queue.append(queue[0].left)
output.append(queue[0].left)
else:
queue.append('#')
output.append('#')
if queue[0] != '#':
if queue[0].right != None:
queue.append(queue[0].right)
output.append(queue[0].right)
else:
queue.append('#')
output.append('#')
queue.pop(0)
for i in range(len(output)):
if output[i] != '#':
if o1 == output[i].val:
a = i
if o2 == output[i].val:
b = i
a += 1
b += 1
c = []
d = []
while(a != 1):
c.append(a)
a = a // 2
while(b != 1):
d.append(b)
b = b // 2
c.append(1)
d.append(1)
for i in range(len(c)):
for j in range(len(d)):
if c[i] == d[j]:
return(output[c[i]-1].val)