给一棵非空二叉搜索树以及一个target值,找到在BST中最接近给定值的节点值
样例
样例1
输入: root = {5,4,9,2,#,8,10} and target = 6.124780
输出: 5
解释:
二叉树 {5,4,9,2,#,8,10},表示如下的树结构:
5
/ \
4 9
/ / \
2 8 10
样例2
输入: root = {3,2,4,1} and target = 4.142857
输出: 4
解释:
二叉树 {3,2,4,1},表示如下的树结构:
3
/ \
2 4
/
1
注意事项
给出的目标值为浮点数
我们可以保证只有唯一一个最接近给定值的节点
/**
* Definition of TreeNode:
* class TreeNode {
* public:
* int val;
* TreeNode *left, *right;
* TreeNode(int val) {
* this->val = val;
* this->left = this->right = NULL;
* }
* }
*/
class Solution {
public:
/**
* @param root: the given BST
* @param target: the given target
* @return: the value in the BST that is closest to the target
*/
int closestValue(TreeNode * root, double target) {
// write your code here
vector<int> tmp;
recurion(root,tmp);
double min=INT_MAX;
int res=INT_MAX;
for (int i = 0; i < tmp.size(); i++) {
/* code */
if(min>abs(tmp[i]-target))
{
min=abs(tmp[i]-target);
res=tmp[i];
}
}
return res;
}
void recurion(TreeNode*root,std::vector<int> &tmp)
{
if(root==NULL) return;
recurion(root->left,tmp);
tmp.push_back(root->val);
recurion(root->right,tmp);
}
};