我正在研究一个函数,它在模板化二叉搜索树中搜索具有给定键的值,然后返回指向该数据值的指针。如果树中不存在给定键,则它返回的指针应指向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 *。我总是遇到指针问题,无法找到解决这些错误的方法。
答案 0 :(得分:1)
而不是entry = cursor->data;
您显然需要entry = &(cursor->data);
。
另请注意,一旦找到您的项目,您可能希望立即返回它,而不是继续遍历树,查看更多项目。