236. Lowest Common Ancestor of a Binary Tree (Medium) - TengnanYao/daily_leetcode GitHub Wiki
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def lowestCommonAncestor(self, root, p, q):
"""
:type root: TreeNode
:type p: TreeNode
:type q: TreeNode
:rtype: TreeNode
"""
def dfs(node, parent):
if node:
node.parent = parent
dfs(node.left, node)
dfs(node.right, node)
dfs(root, None)
parents = [p]
while p:
parents.append(p.parent)
p = p.parent
while q:
if q in parents:
return q
q = q.parent