저는 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;
}
}
몇 가지 상황에 맞는 항목 using Item = std::string;
그래서 나는 키를 사용하여 조회를 전화입니다 추가 할 수 있으며 작업자 함수를 호출하고 키와 루트 키 일치하지만은 N-를 반환하지 않습니다 때 항목을 반환해야합니다 그것은, 어떤 도움을 주시면 감사하겠습니다
BST : 항목 *에 BST : 항목에서 더 적합한 변환이 없다라고 감사 재귀 lookupRec()
전화
오류는 분명하지 않습니까? 'n-> item'은'std :: string'을 가지고 있고'std :: string'에 대한 포인터를 반환하려고합니다. (참고로 * 왜 *'std :: string'에 대한 포인터를 반환하겠습니까? 왜 그것에 대한 참조를 반환하지 않습니까?) – UnholySheep
모든 경고가 활성화 된 상태에서 프로그램을 컴파일하십시오. 그리고 그들을 오류로 취급하십시오. 조회 기능에는 몇 개의 분기가 있습니까? 얼마나 많은 사람들이 반환 진술로 끝나는가? – StoryTeller