一、基本概念
Trie字典树主要用于存储字符串,Trie的每个Node保存一个字符。用链表来描述的话,就是一个字符串就是一个链表。每个Node都保存了它的所有子节点。
如下图所示,根节点不包含任何信息。每个节点表示一个字符串中的字符,从根节点到红色节点的一条路径表示一个字符串。红色节点不一定是叶子节点。
使用Trie这种数据结构存储字符串,查询每个字符串的时间复杂度,只和该字符串长度相同。
二、代码实现
1.首先将基本模型构建出来
创建一个名为TrieNode的类,该类就是我们需要去完善形成的一个Trie的数据结构类。其中有一个Node内部类,Node用来代表Trie中的每一个节点,其中isWord表示首节点到该节点的路径是一个单词,next指向了下一个节点。
public class TrieNode {
//是不是敏感词的结尾
private boolean end = false;
//Character代表当前节点的字符,TrieNode代表了下一个节点
private Map<Character, TrieNode> subNodes = new HashMap<>();
public void addSubNode(Character key, TrieNode node)