您的位置:首页 > 其它

二叉搜索树中查找与目标数字最接近的节点

2012-07-04 21:26 507 查看
struct Node{
int value;
Node* left;
Node* right;
};

Node* LeftPrev = NULL;
Node* RightPrev = NULL;
Node* GetNearestNode(Node* root, int k)
{
if(NULL == root)
{
return NULL;
}
if(k == root->value)
{
return root;
}
if(k < root->value)
{
LeftPrev = root;
if(NULL != root->left)
{
return GetNearestNode(root->left , k);
}
else
{
if(RightPrev != NULL && k - RightPrev->value < root->value - k)
{
return RightPrev;
}
else
{
return root;
}
}
}
else
{
RightPrev = root;
if(NULL != root->right)
{
return GetNearestNode(root->right , k);
}
else
{
if(LeftPrev != NULL &&  k  - root->value  < LeftPrev->value - k)
{
return root;
}
else
{
return LeftPrev;
}
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐