我正在创建一个二叉树,它可以导入像整行这样的酶列表
“AarI/CACCTGCNNNN'NNNN/'NNNNNNNNGCAGGTG//”
并且插入工作正常,显示存储在树中的内容表明它已正确导入文件中的内容,但是在搜索存储的每一行时,我得到一个未找到的返回,除了最后一个导入的插入,这是唯一返回 true 的插入为“Zsp2I/ATGCA'T//”不确定搜索功能有什么问题?
template <class T>
typename Tree<T>::node *Tree<T>::searchTree(T key)
{
cout << "searching for...key: " << key << endl;
return search(key, root);
}
template <class T>
typename Tree<T>::node *Tree<T>::search(T key, node*leaf)
{
if(leaf != NULL)
{
// cout << "check passed for search!" << endl;
if(key == leaf->keyValue)
{
cout << "Found!" << endl;
return leaf;
}
if(key < leaf->keyValue)
{
return search(key, leaf->left);
}
else
{
return search(key, leaf->right);
}
}
else
{
cout << key << " Not found...!" << endl;
return NULL;
}
}
修复了导入文件时由于不可见字符导致的搜索问题。使用涉及查找子字符串的搜索方法修复。
typename Tree<T>::node *Tree<T>::search(T key, node*leaf)
{
T DATA;
if(leaf != NULL)
{
DATA = leaf->keyValue;
if(DATA.find(key) != std::string::npos)
{
cout << "Found!" << key << endl;
return leaf;
}