一、概述html
Trie樹( /tri:/ ),又稱前綴樹、字典樹,是種快速檢索的多叉樹結構,算法
Trie樹的基本性質能夠概括爲:數組
(1)根節點不包含字符,除根節點意外每一個節點只包含一個字符。數據結構
(2)從根節點到某一個節點,路徑上通過的字符鏈接起來,爲該節點對應的字符串。性能
(3)每一個節點的全部子節點包含的字符串不相同。 優化
二、Trie基本實現spa
基本操做包括插入、刪除、查找等。3d
考慮到一般用於字典等內存較大的狀況,應該加入序列化,分割等操做。orm
三、應用htm
接觸這一數據結構是由於分詞處理中的字典存儲問題,對這一問題Trie無心是一個足夠高效的數據結構,採用以空間換時間的方式,提供了良好的查找性能。此外還有一下應用:
1)字符串最長公共前綴
2)排序
先序遍歷整棵樹就是字典序的排序輸出。
3)做爲其餘數據結構或算法的輔助結構
如AC自動機、後綴樹等
四、優化
基本結構的插入、查找時間複雜度爲O(N),N爲字符串長度
空間複雜度爲和字典中字符種類的多少,串的長度有關。
主要優化方法有二分法、基數樹、雙數組等。具體性能能夠參見《幾種Trie樹性能比較》
參考資料
(1)博客 《數據結構之Trie樹》http://dongxicheng.org/structure/trietree/
(2)博客 《幾種Trie樹性能比較》http://www.hankcs.com/nlp/performance-comparison-of-several-trie-tree.html
(3)wiki Trie https://en.wikipedia.org/wiki/Trie