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

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