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.

Solution

/**
 * 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) {
        Integer candidate = null;
        if(target < root.val && root.left != null) candidate = closestValue(root.left, target);
        else if(target > root.val && root.right != null) candidate = closestValue(root.right, target);
        if(candidate != null && Math.abs(target - candidate) < Math.abs(target - root.val)) return candidate;
        return root.val;
    }
}

results matching ""

    No results matching ""