Дерево суфіксів можна розглядати як структуру даних, побудовану поверх тріату, де замість того, щоб просто додавати сам рядок у триє, ви також додаєте всі можливі суфікси цього рядка. Як приклад, якщо ви хочете проіндексувати рядок banana у суфіксальному дереві, ви побудуєте триє з такими рядками:
banana
anana
nana
ana
na
a
Після цього ви можете шукати будь-який n-грам і перевіряти, чи є він у вашому індексованому рядку. Іншими словами, пошук n-грамів - це пошук за префіксом усіх можливих суфіксів вашого рядка.
Це найпростіший і найповільніший спосіб побудови суфіксального дерева. Виявляється, існує безліч вигадливих варіантів цієї структури даних, які покращують простір або час, і час нарощування. Я недостатньо обізнаний у цьому домені, щоб дати огляд, але ви можете почати з розгляду суфіксальних масивів або розширених структур даних цього класу (лекція 16 та 18).
Ця відповідь також чудово спрацьовує варіант цієї структури даних.