0

我正在创建一个二叉树,它可以导入像整行这样的酶列表

“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;
    }
4

1 回答 1

0

从文件中导入行可能会导致导入不可见字符,这将使相同值的字符串比较返回 false。对于我的搜索功能,解决此问题的一种方法是在给定的字符串中进行搜索,将 string1.find(string2) 与返回的结果进行比较。

于 2013-10-16T21:25:59.317 回答