Minimum Distance Between BST Nodes (LC783)

  11 May 2019

By Wen Xu

leetcode algorithm in order traversal binary tree

Problem description

Given a Binary Search Tree (BST) with the root node root, return the minimum difference between the values of any two different nodes in the tree.

Example :

Input: root = [4,2,6,1,3,null,null]
Output: 1
Explanation:
Note that root is a TreeNode object, not an array.

The given tree [4,2,6,1,3,null,null] is represented by the following diagram:

          4
        /   \
      2      6
     / \    
    1   3  

while the minimum difference in this tree is 1, it occurs between node 1 and node 2, also between node 3 and node 2. Note:

The size of the BST will be between 2 and 100. The BST is always valid, each node’s value is an integer, and each node’s value is different.

Solution

  1. We can do inorder traversal and keep record of current minimum difference and current node’s predecessor’s value

Below is python implementation

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def minDiffInBST(self, root: TreeNode) -> int:
        self.prev = -float('inf')
        self.ans = float('inf')
        def inorder(root:TreeNode)->None:
            if not root:
                return
            inorder(root.left)
            self.ans = min(self.ans, root.val - self.prev)
            self.prev = root.val
            inorder(root.right)
            return
        
        inorder(root)
        return self.ans
comments powered by Disqus