Given a non-empty binary search tree and a target value, find the value in the BST that is closest to the target.
Note:
- Given target value is a floating point.
- You are guaranteed to have only one unique value in the BST that is closest to the target.
Run time complexity is O(logn), constant space.
注意:初始化 minDiff时候不能等于Integer.MAX_VALUE,
test case: input[1500000000,1400000000], target -1500000000.0 过不了,因为最小差值超过Integer.MAX_VALUE了已经。
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public int closestValue(TreeNode root, double target) { if (root == null) { return 0; } double minDiff = Math.abs(root.val - target); int value = root.val; while (root != null) { if (Math.abs(root.val - target) < minDiff) { minDiff = Math.abs(root.val - target); value = root.val; } if (root.val < target) { root = root.right; } else { root = root.left; } } return value; } }
No comments:
Post a Comment