Trie

Trong khoa học máy tính, trie, hay cây tiền tố, là một cấu trúc dữ liệu sử dụng cây có thứ tự, dùng để lưu trữ một mảng liên kết của các xâu ký tự. Không như cây nhị phân tìm kiếm, mỗi nút trong cây không liên kết với một khóa trong mảng. Thay vào đó, mỗi nút liên kết với một xâu ký tự sao cho các xâu ký tự của tất cả các nút con của một nút đều có chung một tiền tố, chính là xâu ký tự của nút đó. Nút gốc tương ứng với xâu ký tự rỗng.

Thuật ngữ trie xuất phát từ từ tiếng Anh retrieval. Theo từ nguyên học, người phát minh ra trie là Edward Fredkin phát âm nó là cây . Tuy nhiên nhiều tác giả khác lại phát âm là .

Khóa trong trie không nhất thiết phải là xâu ký tự mà có thể là một danh sách có thứ tự của bất kì đối tượng nào, chẳng hạn như chữ số, hay hình dạng.

Lợi thế của trie so với các cấu trúc dữ liệu tìm kiếm khác

Sau đây là những lợi thế chính của trie so với cây nhị phân tìm kiếm:
 Thời gian tìm kiếm nhỏ hơn. Thao tác tìm kiếm một khóa độ dài m đòi hỏi  phép so sánh ký tự. Một cây nhị phân tìm kiếm sử dụng  phép so sánh xâu ( là số lượng khóa). Trong trường hợp xấu nhất, cây nhị phân tìm kiếm cần dùng  phép so sánh ký tự.
 Trie sử dụng ít bộ nhớ hơn bởi các tiền tố chung chỉ cần được lưu trữ một lần
 Trie cho phép tìm kiếm tiền tố trùng hợp dài nhất.
 Số lượng nút từ gốc tới lá đúng bằng độ dài của khóa.

Sau đây là những lợi thế chính của trie so với bảng băm:
 Trie cho phép liệt kê các khóa theo thứ tự từ điển
 Trie cho phép tìm kiếm tiền tố trùng hợp dài nhất
 Do không phải tính hàm băm nên trie thường nhanh hơn bảng băm trong trường hợp khóa bé chẳng hạn như số nguyên hay con trỏ.

Ứng dụng

Thay thế các cấu trúc dữ liệu khác
Như đã nói ở trên, trie có nhiều ưu điểm so với cây nhị phân tìm kiếm. Trie cũng có thể được dùng thay cho bảng băm.

Biểu diễn từ điển
Một ứng dụng phổ biến của trie là dùng để biểu diễn từ điển.. Trie đặc biệt phù hợp cho các ứng dụng đòi hỏi tìm kiếm xấp xỉ, chẳng hạn như phần mềm soát lỗi chính tả.

Xem thêm
 Cây cơ số
 Cây hậu tố
 Mã hóa Huffman
 Thuật toán tìm kiếm

Ghi chú

Cây (cấu trúc)