C++ 二叉树搜索不工作?
我正在创建一个二叉树,导入一系列酶,就像这整行一样 “AarI/CACCTGCNNNN'NNNN/'nnnnnnnn gcaggtg/” 插入工作正常,显示树中存储的内容表明它已正确导入文件中的内容,但在搜索存储的每一行时,我得到的返回值为not found(未找到),但上次导入的插入除外,这是唯一返回true的插入为“Zsp2I/ATGCA'T/”不确定搜索功能有什么问题C++ 二叉树搜索不工作?,c++,tree,C++,Tree,我正在创建一个二叉树,导入一系列酶,就像这整行一样 “AarI/CACCTGCNNNN'NNNN/'nnnnnnnn gcaggtg/” 插入工作正常,显示树中存储的内容表明它已正确导入文件中的内容,但在搜索存储的每一行时,我得到的返回值为not found(未找到),但上次导入的插入除外,这是唯一返回true的插入为“Zsp2I/ATGCA'T/”不确定搜索功能有什么问题 template <class T> typename Tree<T>::node *Tree
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树::节点*树::搜索树(T键)
{
cout从文件导入行可能导致导入不可见字符,这将使相同值的字符串比较返回false。对于我的搜索函数,解决此问题的一种方法是使用string1.find(string2)在给定字符串内搜索正在与找到的返回进行比较。Uhm…std::set
和std::map
都是平衡的二叉树,为什么不使用它们呢?您好。让人们发现代码中的错误并不是特别有效。您应该使用调试器(或添加打印语句)通过跟踪程序的进度,并将其与预期发生的情况进行比较,来隔离问题。一旦两者出现分歧,您就发现了问题。(如果必要,您应该构建一个解决方案。)您的search
例程看起来很合理。我的猜测是,问题在于插入;它违反了search
所做的假设。在这一点上,我支持@IgorTandetnik。下面是正在执行的搜索示例:LEAF is NOT NULL LEAF V is:XhoI/C'TCGAG//key->XmaI/C'CCGGG//大于LEAF->XhoI/C'TCGAG//LEAF不为空LEAF V为:XhoII/R'GATCY//key->XmaI/C'CCGGG//大于LEAF->XhoII/R'GATCY//LEAF不为空LEAF V为:XmaI/C'CCGGG//key->XmaI/C'CCGGG//小于LEAF->XmaI/C'CCGGG//
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;
}