给定一棵二叉搜索树(BST),寻找BST中两个给定节点的最近公共祖先(LCA)。
根据维基百科对LCA的定义:“节点v与w的最近公共祖先是树T上同时拥有v与w作为后继的最低节点(我们允许将一个节点当做其本身的后继)”
123456789101112131415161718
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