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;
}Last updated