В настоящее время я работаю с программой, в которую вставляю слова в три. В настоящее время моя функция вставки добавляет только первую букву слова, а затем останавливается. Из всего, что я посмотрел, мой код выглядит правильно, поэтому я не понимаю, в чем проблема.
Я попытался переместить temp-> wordEnd = true за пределы цикла for и в другие места в функции. Потому что я считаю, что это проблема, потому что все остальное в моей функции вставки выглядит правильно.
Вот моя функция вставки:
bool Trie::insert(string word)
{
TrieNode *temp = root;
temp->prefixAmount++;
for (int i = 0; i < word.length(); ++i)
{
int currentLetter = (int)word[i] - (int)'a';
if (temp->child[currentLetter] == NULL)
{
temp->child[currentLetter] = new TrieNode();
temp->child[currentLetter]->prefixAmount++;
temp = temp->child[currentLetter];
}
temp->wordEnd = true;
return true;
}
}
Также, чтобы помочь каждому немного лучше следовать моему коду
Вот моя структура TrieNode:
struct TrieNode
{
int prefixAmount;
struct TrieNode *child[ALPHA_SIZE];
bool wordEnd;
};
А вот мой конструктор Trie:
Trie::Trie()
{
root = new TrieNode();
root->wordEnd = false;
root->prefixAmount = 0;
}
Предполагается, что ожидаемые результаты состоят в том, что все слово вставляется.
На самом деле происходит только то, что добавляется только первая буква слова.