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;
}