我有一个有效的搜索功能,它将在数据库中搜索确切的值,但我的目标是让它在存储数据的数据库中搜索子字符串,并在搜索子字符串时(使用了 cout <<“检查通过”)我可以看到通过树的搜索缩短了,找到了一些子字符串,而其他更深的却没有?为什么?
bool contains(const Comparable & key, BinaryNode *leaf)
{
//cout << "containsing... for: " << key << endl;
if(leaf != NULL)
{
//std::string Data = leaf->element;
//cout << "check passed for contains!" << endl;
if(leaf->element.find(key) != std::string::npos)
{
//std::cout << "Found->" << key << "!" << endl;
return true;
}
else if(key >= leaf->element)
{
// cout << "key->" << key << "is less than leaf->" <<leaf->element << endl;
if(leaf->left != NULL)
return contains(key, leaf->left);
else
return false;
}
else if(key < leaf->element)
{
//cout << "key->" << key << "is greater than leaf->" <<leaf->element << endl;
if(leaf->right != NULL)
return contains(key, leaf->right);
else
return false;
}
else
return false;
}
else
return false;
}