이 함수는 순환 적으로 Btree를 검색하기 위해 자체적으로 호출하고 값이 있으면 true를 반환하고 값이 없으면 false를 반환합니다. 나는 또한 그것을 찾을 수 없다면 "찾지 못했습니다"한 번 끝에 끝내기를 원합니다. 그것은 그것이 스스로를 부르기 때문에 "발견되지 않는다"라는 말을 제외하고는 잘 동작합니다 (매번 발견하지 못하는 레벨을 내릴 때마다).B 트리 재귀 적 탐색 C++
bool lookup(int val, btnode *n) //returns true/false if value is in btree
{
if (n==NULL) return false; //empty tree
for (int i=0;i< n->count;i++) //check in present node for the val
if(n->value[i]==val)
{
flag = true;
return true;
}
//check in child node
for(int i =0;i<n->count;i++) //check for child node
{ if(val < n->value[i])
{ cout<<"checking a different node."<<endl;
lookup(val,n->child[i]);
}
}
if(val > n->value[(n->count)-1])
{
cout<<"searching a right subtree"<<endl;
lookup(val, n->child[n->count]);
}
if (flag==false)
return false;
else return true;
}
bool lookup2(int val, btnode *n)
{
if(lookup(val, n)==false)
{
cout<<"not found"<<endl;
return false;
}
else
{
cout<<"Found it"<<endl;
return true;
}
}
두 가지 기능이 있습니다. 하나는 실제 인쇄를하고, 지금은 작업을 재귀 적으로 수행하는 것입니다. – zz3599
호출자가 여기에서 수행하려고하지 않고 호출자가이 작업을 수행하는 이유는 무엇입니까? – Tawnos
'bool contains()'함수는'location find()'보다 거의 유용하지 않습니다. –