这道题采用递归的方法,如果根节点在min(p,q)和max(p,q)之间,说明根节点已经是lowest common ancestor。
否则,如果根节点<min(p,q),说明lowest common ancestor在根节点的右子树中;反之在根节点的左子树中。
# 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
"""
if root.val >= min(p.val, q.val) and root.val <= max(p.val, q.val):
return root
elif root.val > max(p.val, q.val):
return self.lowestCommonAncestor(root.left, p, q)
else:
return self.lowestCommonAncestor(root.right, p, q)