给定一棵二叉搜索树(BST),寻找BST中两个给定节点的最近公共祖先(LCA)。
根据维基百科对LCA的定义:“节点v与w的最近公共祖先是树T上同时拥有v与w作为后继的最低节点(我们允许将一个节点当做其本身的后继)”
class Solution2(object):
def lowestCommonAncestor(self, root, p, q):
"""
:type root: TreeNode
:type p: TreeNode
:type q: TreeNode
:rtype: TreeNode
"""
# 6 star, 巧妙的解法
if p.val > q.val:
p, q = q, p
while root:
if root.val < p.val:
root = root.right
elif root.val > q.val:
root = root.left
else:
return root