0

この行全体のような酵素のリストをインポートするバイナリツリーを作成しています

"AarI/CACCTGCNNNN'NNNN/'NNNNNNNNGCAGGTG//"

挿入は正常に機能し、ツリーに保存されているものを表示すると、ファイルからコンテンツが正しくインポートされたことが示されますが、保存されている各行を検索すると、最後にインポートされた挿入を除いて見つからないという戻り値が返されます。挿入が「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 が返される可能性があります。私の検索機能では、この問題を解決する 1 つの方法は、string1.find(string2) を比較して見つかった文字列を検索することです。

于 2013-10-16T21:25:59.317 に答える