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;
}
}
}
}二叉搜索树中查找与目标数字最接近的节点
最新推荐文章于 2022-06-12 16:35:01 发布
本文介绍了一种使用C++结构体实现获取树中特定值最近节点的算法,通过递归遍历树结构,判断目标值与当前节点值的关系,返回最接近的目标节点。

1140

被折叠的 条评论
为什么被折叠?



