Cây hậu tố có thể được xem như một cấu trúc dữ liệu được xây dựng trên đầu một trie, trong đó, thay vì chỉ thêm chính chuỗi vào trie, bạn cũng sẽ thêm mọi hậu tố có thể có của chuỗi đó. Ví dụ: nếu bạn muốn lập chỉ mục chuỗi chuối trong một cây hậu tố, bạn sẽ xây dựng một bộ ba với các chuỗi sau:
banana
anana
nana
ana
na
a
Sau khi hoàn tất, bạn có thể tìm kiếm n-gram bất kỳ và xem liệu nó có trong chuỗi đã lập chỉ mục của bạn hay không. Nói cách khác, tìm kiếm n-gram là tìm kiếm tiền tố của tất cả các hậu tố có thể có trong chuỗi của bạn.
Đây là cách đơn giản nhất và chậm nhất để xây dựng cây hậu tố. Nó chỉ ra rằng có nhiều biến thể lạ hơn trên cấu trúc dữ liệu này cải thiện về một trong hai hoặc cả không gian và thời gian xây dựng. Tôi không đủ thông thạo về miền này để đưa ra một cái nhìn tổng quan nhưng bạn có thể bắt đầu bằng cách xem xét các mảng hậu tố hoặc cấu trúc dữ liệu nâng cao của lớp này (bài giảng 16 và 18).
Câu trả lời này cũng thực hiện một công việc tuyệt vời giải thích một biến thể của cấu trúc dữ liệu này.