我正在使用递归在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 *
任何帮助将不胜感激,谢谢
答案 0 :(得分:1)
如果你以递归方式调用lookupRec()
,你也应该返回,否则,你将不会从该函数实例返回任何内容:return lookupRec(k, n->rightChild);
正如@UnholySheep已经提到的那样:返回正确的类型,正如编译器告诉你的那样:return &(n->item);