Minimum Distance Between BST Nodes

LeetCode Q 783 - Minimum Distance Between BST Nodes

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: 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:

Code: DFS

Integer res = Integer.MAX_VALUE, prev = null;
public int minDiffInBST(TreeNode root) {
  dfs(root);
  return res;
}

private void dfs(TreeNode root) {
  if (root == null) return;

  dfs(root.left);

  if (prev != null) res = Math.max(res, root.val - prev);

  prev = root.val;

  dfs(root.right);
}

Code: Recursion

Integer res = Integer.MAX_VALUE, prev = null;
public int minDiffInBST(TreeNode root) {
  if (root.left != null) minDiffInBST(root.left);

  if (prev != null) res = Math.abs(res, root.val - prev);

  if (root.right != null) minDiffInBST(root.right);
  
  return res;
}

   Reprint policy


《Minimum Distance Between BST Nodes》 by Tong Shi is licensed under a Creative Commons Attribution 4.0 International License
  TOC