leetcode-- Lowest Common Ancestor of a Binary Search Tree

来源:互联网 发布:js将集合转换为数组 编辑:程序博客网 时间:2024/06/01 09:30

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.


解:


如果两个node在root的两侧(或其中一个就是root),当前的root就是LCA,否则root向下移。由于是二叉搜索树当两个node值同时大于(小于)根节点值时就代表这两个节点在根的同一棵子树上。

# 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        """        while(p.val-root.val)*(q.val-root.val)>0:        root=(root.left,root.right)[p.val>root.val]        return root


0 0