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

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
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞