二叉树查找

时间:2017-10-17 14:31:09

标签: c++ binary-search-tree

我正在使用递归在C ++中构建二叉树,但我无法弄清楚为什么我无法返回一个项目,这可能是一件很简单的事情,我只是在寻找但是我一直在看它,所以我无法弄明白。

BST::Item * BST::lookup(Key k)
{
    return(lookupRec(k, root));
}

BST::Item * BST::lookupRec(Key k, Node* n)
{
    if (k == n->key)
    {
        return n->item; //problem is here
    }
    else if (k > n->key)
    {
        lookupRec(k, n->rightChild);
    }
    else if (k < n->key)
    {
        lookupRec(k, n->leftChild);
    }
    else
    {
        return nullptr;
    }
}

添加一些上下文Item是using Item = std::string;所以我用一个键调用查找并调用worker函数,并在键和根键匹配时返回该项,但它不会返回n-&gt; item因为它表示没有从BST :: Item到BST :: Item *

的合适转换

任何帮助将不胜感激,谢谢

1 个答案:

答案 0 :(得分:1)

如果你以递归方式调用lookupRec(),你也应该返回,否则,你将不会从该函数实例返回任何内容:return lookupRec(k, n->rightChild);

正如@UnholySheep已经提到的那样:返回正确的类型,正如编译器告诉你的那样:return &(n->item);