美文网首页
[LeetCode]530. Minimum Absolute

[LeetCode]530. Minimum Absolute

作者: Eazow | 来源:发表于2017-06-02 14:55 被阅读96次
    题目

    Given a binary search tree with non-negative values, find the minimum absolute difference between values of any two nodes.

    Example:

    Input:
       1
        \
         3
        /
       2
    Output:
    1
    Explanation:
    The minimum absolute difference is 1, which is the difference between 2 and 1 (or between 2 and 3).
    

    **Note: **There are at least two nodes in this BST.

    难度

    Easy

    方法

    对于BST,采用中序遍历,就会将节点按照从小到大遍历出来。依次取2个节点的差值,然后取最小值即可

    python代码
    import sys
    
    class TreeNode(object):
        def __init__(self, x):
            self.val = x
            self.left = None
            self.right = None
    
    class Solution(object):
        def __init__(self):
            self.minValue = sys.maxint
            self.list = []
    
        def getMinimumDifference(self, root):
            """
            :type root: TreeNode
            :rtype: int
            """
            self.traverse(root)
            return self.minValue
    
        def traverse(self, node):
            if node.left:
                self.traverse(node.left)
            if self.list:
                self.minValue = min(self.minValue, node.val-self.list.pop())
            self.list.append(node.val)
            if node.right:
                self.traverse(node.right)
    
    root = TreeNode(1)
    root.right = TreeNode(5)
    root.right.left = TreeNode(2)
    assert Solution().getMinimumDifference(root) == 1
    

    相关文章

      网友评论

          本文标题:[LeetCode]530. Minimum Absolute

          本文链接:https://www.haomeiwen.com/subject/vhhufxtx.html