530. Minimum Absolute Difference in BST
Given the root of a Binary Search Tree (BST), return the minimum absolute difference between the values of any two different nodes in the tree.
Example 1:
Input: root = [4,2,6,1,3]
Output: 1
Example 2:
Input: root = [1,0,48,null,null,12,49]
Output: 1
Constraints:
- The number of nodes in the tree is in the range [ 2 , 1 0 4 2, 10^4 2,104].
- 0 < = N o d e . v a l < = 1 0 5 0 <= Node.val <= 10^5 0<=Node.val<=105
From: LeetCode
Link: 530. Minimum Absolute Difference in BST
Solution:
Ideas:
The strategy to solve this problem is:
- Perform an in-order traversal of the BST.
- As we traverse, compare the difference between the current node and the previous node.
- Keep track of the minimum difference encountered.
Code:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
int prev = -1;
int minDiff = INT_MAX;
void inorder(struct TreeNode* root) {
if (!root) return;
inorder(root->left);
// If prev is initialized (i.e., not -1), compute the difference
if (prev != -1) {
int diff = root->val - prev;
if (diff < minDiff) {
minDiff = diff;
}
}
prev = root->val;
inorder(root->right);
}
int getMinimumDifference(struct TreeNode* root) {
// Initialize global variables for each new call
prev = -1;
minDiff = INT_MAX;
inorder(root);
return minDiff;
}