您的位置:首页 > 其它

LeetCode Lowest Common Ancestor of a Binary Search Tree (LCA最近公共祖先)

2015-07-11 14:25 477 查看
题意:

  给一棵二叉排序树,找p和q的LCA。

思路:

  给的是BST(无相同节点),那么每个节点肯定大于左子树中的最大,小于右子树种的最小。根据这个特性,找LCA就简单多了。

  分三种情况:

  (1)p和q都在root左边,那么往root左子树递归。

  (2)在右同理。

  (3)一左一右的,那么root->val肯定大于其中的1个,小于另一个。

class Solution(object):
def lowestCommonAncestor(self, root, p, q):
"""
:type root: TreeNode
:type p: TreeNode
:type q: TreeNode
:rtype: TreeNode
"""
if (p.val-root.val)*(q.val-root.val)<=0:    #一左一右
return root
elif p.val<root.val:    #左
return self.lowestCommonAncestor(root.left, p, q)
else:
return self.lowestCommonAncestor(root.right, p, q)


AC代码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: