270. Closest Binary Search Tree Value

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
// Naive Recursion
void helper(TreeNode* node, double target, int& res) {
    if (!node) return;
    if (abs(target - res) > abs(target - node->val))
        res = node->val;
    helper(node->left, target, res);
    helper(node->right, target, res);
}
int closestValue(TreeNode* root, double target) { // time: O(n); space: O(n) for the worst case, O(log(n)) for the average
    if (!root) return -1;
    int res = root->val;
    helper(root, target, res);
    return res;
}
272. Closest Binary Search Tree Value IIchevron-right

Last updated