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;
}
}
}
}
二叉搜索树中查找与目标数字最接近的节点
原文作者:二叉查找树
原文地址: https://blog.csdn.net/splendour/article/details/7716550
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/splendour/article/details/7716550
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。