#include <iostream>
#include <vector>
using namespace std;
/*
Given a non-empty binary search tree and a target value, find K
values in the BST that are closest to the target.
Note:
1: Given target value is a floating point.
2: You may assume k is always valid, that is k <= total nodes.
*/
// Deque STL actually is the key to solve this problem.....
void findClosestKValues(TreeNode* root, int target, deque<int>& res, int k) {
if(!root) return;
findCloestKValues(root->left, target, res, k);
if(res.size() < k) res.push_back(root->val);
else if(res.size() == k) {
if(abs(target - root->val) < abs(target - res.front())) {
res.pop_front();
res.push_back(root->val);
}
}
findClosestKValues(root->right, target, res, k);
}
vector<int> findClosestKValues(TreeNode* root, int target, int k) {
deque<int> res;
findClosestKValues(root, target, res, k);
vector<int> result;
while(!res.empty()) {
result.push_back(res.front());
res.pop_front();
}
return result;
}
LeetCode 272. Closest Binary Search Tree Value II
最新推荐文章于 2022-01-15 20:56:21 发布