235. Lowest Common Ancestor of a Binary Search Tree

来源:互联网 发布:python移动文件 编辑:程序博客网 时间:2024/05/10 03:19

Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BST.

According to the definition of LCA on Wikipedia: “The lowest common ancestor is defined between two nodes v and w as the lowest node in T that has both v and w as descendants (where we allow a node to be a descendant of itself).”

        _______6______       /              \    ___2__          ___8__   /      \        /      \   0      _4       7       9         /  \         3   5

For example, the lowest common ancestor (LCA) of nodes 2 and 8 is 6. Another example is LCA of nodes 2 and 4 is 2, since a node can be a descendant of itself according to the LCA definition.

# Definition for a binary tree node.# class TreeNode(object):#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = Noneclass Solution(object):    def lowestCommonAncestor(self, root, p, q):        """        :type root: TreeNode        :type p: TreeNode        :type q: TreeNode        :rtype: TreeNode        """        a=root        if q.val>p.val:            t=p            p=q            q=t        if root==None:            return root        while q.val>a.val or a.val>p.val:            if q.val>a.val:                a=a.right            if a.val>p.val:                a=a.left            if a==None:                break        return a


0 0