Given a binary search tree with non-negative values, find the minimumabsolute differencebetween 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.

Iterative Solution using Level Order Traversal(Timeout):

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
import Queue
class Solution(object):
    def getMinimumDifference(self, root):
        """
        :type root: TreeNode
        :rtype: int
        """
        if not root:
            return None

        q = Queue.Queue()
        q.put(root)
        node = None
        result = []
        mini = 1234567
        while not q.empty():
            node = q.get()
            result.append(node.val)

            if node.left is not None:
                q.put(node.left)
            if node.right is not None:
                q.put(node.right)

        return min([abs(a-b) for a,b in zip(result, result[1:])])

Recursive Solution using InOrder Traversal(Accepted):

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution(object):
    def getMinimumDifference(self, root):
        """
        :type root: TreeNode
        :rtype: int
        """
        def inorder(node,result=[]):
            if node.left: inorder(node.left,result)
            result.append(node.val)
            if node.right: inorder(node.right,result)
            return result

        result = inorder(root)

        return min([abs(a-b) for a,b in zip(result, result[1:])])

results matching ""

    No results matching ""