在二叉搜索树中搜索值

时间:2012-12-05 04:23:26

标签: c++ pointers compiler-errors binary-search-tree

我正在研究一个函数,它在模板化二叉搜索树中搜索具有给定键的值,然后返回指向该数据值的指针。如果树中不存在给定键,则它返回的指针应指向NULL。到目前为止,我有:

template <typename Item, typename Key>
Item* BSTree<Item,Key>::search(const Key& key) const {
    Item* entry = NULL;
    Node* cursor = root;
    while(cursor != NULL) {
        if(key > cursor->data) 
            cursor = cursor->right;
        else if(key < cursor->data)
            cursor = cursor->left;
        else
            entry = cursor->data;
    }
    return entry;
}

但是当我尝试运行它时会出现错误,说我无法将Item转换为Item *。我总是遇到指针问题,无法找到解决这些错误的方法。

1 个答案:

答案 0 :(得分:1)

而不是entry = cursor->data;您显然需要entry = &(cursor->data);

另请注意,一旦找到您的项目,您可能希望立即返回它,而不是继续遍历树,查看更多项目。