Un árbol de sufijos se puede ver como una estructura de datos construida sobre un trie donde, en lugar de simplemente agregar la cadena en sí al trie, también agregaría todos los sufijos posibles de esa cadena. Como ejemplo, si quisiera indexar la cadena banana en un árbol de sufijos, debería construir un trie con las siguientes cadenas:
banana
anana
nana
ana
na
a
Una vez hecho esto, puede buscar cualquier n-grama y ver si está presente en su cadena indexada. En otras palabras, la búsqueda de n-gramas es una búsqueda de prefijos de todos los posibles sufijos de su cadena.
Esta es la forma más sencilla y lenta de construir un árbol de sufijos. Resulta que hay muchas variantes más sofisticadas en esta estructura de datos que mejoran el espacio y el tiempo de construcción o ambos. No estoy lo suficientemente versado en este dominio como para dar una descripción general, pero puede comenzar por buscar matrices de sufijos o estructuras de datos avanzadas de esta clase (lecciones 16 y 18).
Esta respuesta también hace un trabajo maravilloso al explicar una variante de esta estructura de datos.