Итак, вот мое затруднительное положение: я пытаюсь пройти через структуру данных три, чтобы найти n-е слово.
Для тех из вас, кто не знаком, trie - это структура данных на основе сжатия, которая позволяет вставлять серии слов и сортировать их лексикографически, но каждый узел должен иметь свою собственную отдельную букву и, таким образом, разветвлятьсяи написание соответствующих слов (если неясно, кто-то, у кого есть более конкретное определение, пожалуйста, исправьте!).
Каждый узел в дереве имеет массив из 26 узлов, представляющих 26 букв алфавита.Как только слово написано, логическое значение в массиве (isWord) для последнего символа в слове помечается как true.Это также относится к словам в словах, таких как {a, and, are, art};«A» - это слово, поэтому isWord для этой буквы установлено в true.Однако буквы внутри «и» прикрепляются к «а», а «d» помечается как слово.
Теперь, когда введение установлено, вот моя проблема: мне очень трудно сделать это рекурсивно, поэтому я попытался сделать это итеративно.Я очень, очень близок к решению, но по какой-то причине некоторые слова пропускаются, когда я вызываю nthWord (int n).По сути, метод должен проходить по дереву (которое в алфавитном порядке по свойству дерева) и находить n-е слово, как следует из названия.Но, как было сказано выше, иногда метод пропускает слова в дереве, даже если он гарантированно добавляется в дерево (и логическое значение isWord также всегда корректно).Я был в этой проблеме около 3 дней, и я так потерян.
Я ожидаю, что выводом будет n-е слово в последовательности (из очень большого .txt файла слов), но иногда оно пропускает определенные слова.Если j присвоено -1, учитываются такие слова, как «aardvark», которые начинаются с 2 одинаковых букв, но другие пропускаются.И наоборот, если ему присвоено значение 0, учитываются другие слова, но слова, начинающиеся с двух одинаковых букв, пропускаются.
РЕДАКТИРОВАТЬ: я должен также указать, что метод nthWord (...) не 'Обрабатывать повторяющиеся слова.Три хранит частоты каждого слова в последнем символе указанного слова.Поэтому повторяющиеся слова не являются проблемой в этом случае.