二叉树搜索不起作用

Binary Tree Search Not Working?

本文关键字:不起作用 搜索 二叉树      更新时间:2023-10-16

我正在创建一个二叉树,它导入了一整行酶的列表

"AarI/CACCTGCNNNN'NNNN/'NNNNNNNGCAGGTG//"

插入

工作正常,显示树中存储的内容显示它已正确导入文件的内容,但是在搜索存储的每一行时,我得到的返回是 未找到 除了最后一个导入的插入之外,这是唯一返回 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;
    }

从文件导入行可能会导致导入不可见字符,这将留下相同值的字符串比较以返回 false。对于我的搜索函数,解决此问题的一种方法是在给定字符串内搜索,并将 string1.find(string2) 与返回找到进行比较。