# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode':
res = root
self.ppath = []
#self.qpath = []
self.preorder(root, p, [])
tmpp = self.ppath
self.preorder(root, q, [])
tmpq = self.ppath
#print(self.ppath)
#print("--------------")
#print(len(self.ppath))
for item in tmpp:
if item in tmpq:
res = item
else:
#print(item)
break
return res
def preorder(self, node, p,pathp):
if not node:
return
pathp.append(node)
#pathq.append(node)
if p == node:
self.ppath = pathp[:]
# return
# if q == node:
# self.qpath = pathq[:]
# if self.ppath and self.qpath:
# return
else:
self.preorder(node.left, p, pathp[:])
self.preorder(node.right, p, pathp[:])
pathp.pop()
236. 二叉树的最近公共祖先
最新推荐文章于 2021-02-10 18:13:01 发布