0
私のトライツリーデータ構造の検索機能を実装しようとしています。私はこれを適切に実装する方法を混乱させています。私の論理は今正しいと思われるので...私はまだこれの初心者ですが。誰かが私の機能を見て改善すべき場所を示せばそれは大いに感謝します。メインは大きな単語ファイルを取り込み、その中の単語を検索して基本的に機能をテストします。今は、トライオブジェクト内にある単語に対してfalseを返します。Trieの検索/追加機能が正しく動作しない
例のエラーメッセージ
Error: jean-pierre is not in the spellcheck and it should have been
検索機能:
//looks up the word in the SpellCheck object. If it is in the SpellCheck object,true is returned.
//You can assume that the word will be all lower case.
bool lookup(const string& word) const {
if (!root_) {
return false;
}
Node* curr = root_;
if (word[0] == '\0') {
return curr->isTerminal_ == true;
}
for (int i = 0; i < word.length(); i++)
{
int idx = curr->getIndex(word[i]);
if (idx < 0 || idx >= 26){
return false;
}
// Search top level for node that
// matches first character in key
if (curr->children_[idx] == nullptr) {
return false;
}
curr = curr->children_[idx];
}
return curr->isTerminal_ == true;
}
ノード構造体:
struct Node {
bool isTerminal_;
char ch_;
Node* children_[26];
Node(char c = '\0') {
isTerminal_ = false;
ch_ = c;
for (int i = 0; i < 26; i++) {
children_[i] = nullptr;
}
}
//given lower case alphabetic charachters ch, returns
//the associated index 'a' --> 0, 'b' --> 1...'z' --> 25
int getIndex(char ch) {
return ch - 'a';
}
};
Node* root_;
あなたの検索方法は大丈夫に見えます。あなたの挿入機能を提供してください –
挿入機能がテスト時に正しく動作していました。 – user7795742
その後、ブレークポイントを設定してコードをデバッグします。 –