非STL二进制搜索树搜索功能问题

时间:2019-05-28 05:58:21

标签: c++ search binary-search-tree

class BinarySearchTree
{
    struct Node
    {
        T data;
        Node * left;
        Node * right;
        Node(T key) :data(key), left(nullptr), right(nullptr) {}
    };

    Node * root;

    int size(Node * node);
    void printNode(Node*);
    void deleteNode(Node*);
    void insert(Node * node, Node * nodePtr);   
    void inorder(Node * root, void(*inorderPtr)(T &)) const;
    void preorder(Node * root, void(*preorderPtr)(T &)) const;
    void postorder(Node * root, void(*postorderPtr)(T &)) const;

public:

    BinarySearchTree();
    ~BinarySearchTree();
    T search(T value);
    BinarySearchTree(const BinarySearchTree<T> & source);
    const BinarySearchTree<T> & operator = (const Node & other);
    void insert(const T);
    void print();
    int size();
    void inorder(void(*output)(T &)) const;
    void preorder(void(*preorderPtr)(T &)) const;
    void postorder(void(*postorderPtr)(T &)) const;
};
template<class T>
inline T BinarySearchTree<T>::search(T value)
{
    if (value == this->root){
        return value;
    }
    else if (value < this->root)
    {
        if (left == nullptr){}  
        else
        {
            return left->search(value);
        }
    }
    else if (value > this->root)
    {
        if (right == nullptr){}
        else
        {
            return right->search(value);
        }
    }
}

错误C2678二进制'<':未找到采用'T'类型的左操作数的运算符(或没有可接受的转换)

错误C2678二进制'==':未找到采用'T'类型的左操作数(或没有可接受的转换)的运算符

错误C2678二进制'>':未找到采用'T'类型的左操作数的运算符(或没有可接受的转换)

像这样

bool handler::operator>(const weatherData & w)
{
    bool temp = false;

    if (w > this->testD)
    {
        temp = true;
    }

    return temp;
}

我正在尝试检索存储在BST内的映射,我对该特定对象有重载运算符,但由于某些原因,上面的代码会引发这些错误。如果我的BST是T型,我是否需要重载运算符?任何帮助将非常感谢。

0 个答案:

没有答案