在二进制搜索树C ++中找到最接近的值

时间:2017-05-02 05:40:57

标签: c++ binary-search-tree

  • 我想在二进制搜索树中找到最接近的值,以整数作为参数。参数nearestValue()应返回树中具有最小差异的整数。
  • 问题是我运行应用程序而且nearestValue总是给我一个0。
  • 我的构造函数中还有一个控件到达非void函数的结尾。 有谁知道如何解决这个问题?

        template<typename T>
     T bst<T>::closestValue(T value) const
    {
    return T();
    }
    
    template<typename T>
    T bst<T>::closestValue(T value, T & closest, bst_node<T>* node) const
    {
    bst_node<T>* pClosest = NULL;
    int minDistance = 5000;
    
    bst_node<T>* pNode = root;
    
    while(pNode != NULL)
    {
        int distance = abs(pNode->value);
        if(distance < minDistance)
        {
            minDistance = distance;
            pClosest = pNode;
        }
    
        if(distance == 0)
            break;
    
        if(pNode->value > value)
            pNode = pNode->left;
        else if(pNode->value < value)
            pNode = pNode->right;
    }
    
    return pClosest;
     }
    

0 个答案:

没有答案