Trie又被称为前缀树或者字典树。它的基本作用是用来存储一个字符串集合:{W1, W2, W3, … WN},并且可以用来查询一个字符串S是不是在集合里
具体来说,Trie一般支持两个操作:
1. Trie.insert(W):第一个操作是插入操作,就是将一个字符串W加入到集合中
2. Trie.search(S):第二个操作是查询操作,就是查询一个字符串S是不是在集合中
由于Trie的特性,它还特别适合处理一些与前缀有关的查询,比如集合中有几个字符串与S有公共前缀这样的查询
首先我们来看一下Trie长什么样子:
上面这棵Trie树包含的字符串集合是{in, inn, int, tea, ten, to}。每个节点的编号是我们为了描述方便加上去的。树中的每一条边上都标识有一个字符。这些字符可以是任意一个字符集中的字符。比如对于都是小写字母的字符串,字符集就是’a’-‘z’;对于都是数字的字符串,字符集就是’0’-‘9’;对于二进制字符串,字符集就是0和1
从一个节点连出去的边都必须标识不同的字符。所以一个节点最多有|字符集|这么多子节点。其中有一些