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
中序遍历
Code
classSolution {Integer res =Integer.MAX_VALUE, pre =null;publicintgetMinimumDifference(TreeNode root) {if (root.left!=null) {getMinimumDifference(root.left); }if (pre !=null) res =Math.min(res,root.val- pre); pre =root.val;if (root.right!=null) {getMinimumDifference(root.right); }return res; }}
classSolution {publicintgetMinimumDifference(TreeNode root) {int res =Integer.MAX_VALUE;Stack<TreeNode> stack =newStack<>();TreeNode cur = root;TreeNode pre =null; while (cur !=null||!stack.isEmpty()) {while (cur !=null) {stack.push(cur); cur =cur.left; } cur =stack.pop();if (pre !=null) { res =Math.min(res,cur.val-pre.val); } pre = cur; cur =cur.right; }return res; }}