C++ 二叉树搜索不工作?

C++ 二叉树搜索不工作?,c++,tree,C++,Tree,我正在创建一个二叉树,导入一系列酶,就像这整行一样 “AarI/CACCTGCNNNN'NNNN/'nnnnnnnn gcaggtg/” 插入工作正常,显示树中存储的内容表明它已正确导入文件中的内容,但在搜索存储的每一行时,我得到的返回值为not found(未找到),但上次导入的插入除外,这是唯一返回true的插入为“Zsp2I/ATGCA'T/”不确定搜索功能有什么问题 template <class T> typename Tree<T>::node *Tree

我正在创建一个二叉树,导入一系列酶,就像这整行一样

“AarI/CACCTGCNNNN'NNNN/'nnnnnnnn gcaggtg/”

插入工作正常,显示树中存储的内容表明它已正确导入文件中的内容,但在搜索存储的每一行时,我得到的返回值为not found(未找到),但上次导入的插入除外,这是唯一返回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树::节点*树::搜索树(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;
    }