Given a binary search tree with non-negative values, find the minimum absolute difference between 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.
/**
* Definition for a binary tree node.
* public class TreeNode {
* public int val;
* public TreeNode left;
* public TreeNode right;
* public TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public int GetMinimumDifference(TreeNode root) {
if (root == null) {
return 0;
}
int min = Int32.MaxValue;
Stack<TreeNode> stack = new Stack<TreeNode>();
TreeNode current = root;
while (current != null) {
stack.Push(current);
current = current.left;
}
while (stack.Count != 0) {
current = stack.Pop();
if (stack.Count > 0) {
int diff = Math.Abs(stack.Peek().val - current.val);
min = Math.Min(diff,min);
}
TreeNode node = current.right;
while (node != null) {
stack.Push(node);
node = node.left;
if (stack.Count > 0) {
int diff = Math.Abs(stack.Peek().val - current.val);
min = Math.Min(diff,min);
}
}
}
return min;
}
}