272. Closest Binary Search Tree Value II
Input: root = [4,2,5,1,3], target = 3.714286, and k = 2
4
/ \
2 5
/ \
1 3
Output: [4,3]void helper(TreeNode* node, double target, int k, priority_queue<pair<double, int>>& pq) {
if (!node) return;
pq.push(make_pair(abs(target - node->val), node->val));
if (pq.size() > k) pq.pop();
helper(node->left, target, k, pq);
helper(node->right, target, k, pq);
}
vector<int> closestKValues(TreeNode* root, double target, int k) { // time: O(n*logk); space: O(n or k)
vector<int> res;
if (!root) return res;
priority_queue<pair<double, int>> pq;
helper(root, target, k, pq);
while (!pq.empty()) {
res.push_back(pq.top().second);
pq.pop();
}
return res;
}Last updated