L270. Closest Binary Search Tree Value

Problem:

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.

Example:

Input: root = [4,2,5,1,3], target = 3.714286

    4
   / \
  2   5
 / \
1   3

Output: 4

Solution:

public int closestValue(TreeNode root, double target){
    if(root == null) return 0;
    TreeNode cur = root;
    TreeNode res = root;
    while(cur != null){
        if(Math.abs(cur.val - target) < Math.abs(res - target){
            res = cur;
        }else if(cur.val < target){
            cur = cur.right;
        }else cur = cur.left;
    }
    return res.val;
}

Last updated

Was this helpful?