一、概述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