Дерево суффиксов можно рассматривать как структуру данных, построенную на основе дерева, в котором вместо простого добавления самой строки в дерево можно также добавить все возможные суффиксы этой строки. Например, если вы хотите проиндексировать строку banana в дереве суффиксов, вы должны построить дерево со следующими строками:
banana
anana
nana
ana
na
a
Как только это будет сделано, вы можете найти любой n-грамм и посмотреть, присутствует ли он в вашей проиндексированной строке. Другими словами, поиск n-грамм - это префиксный поиск всех возможных суффиксов вашей строки.
Это самый простой и медленный способ построить дерево суффиксов. Оказывается, есть много более причудливых вариантов этой структуры данных, которые улучшают как пространство, так и время сборки. Я недостаточно хорошо разбираюсь в этой области, чтобы делать обзор, но вы можете начать с изучения суффиксных массивов или расширенных структур данных этого класса (лекции 16 и 18).
Этот ответ также прекрасно объясняет вариант этой структуры данных.