字典树(Trie Tree)
考点
1、★ Trie 直接实现
2、利用 Trie 树前缀特性解题
3、矩阵类里面,字符串一个一个字符,深度优先遍历的问题。
什么是字典树
1、最上面是一个虚根节点,没有值。
2、在字典树中每个节点都有26个虚分支,对应26个字母。
3、若要存储某个单次,如:ABC,首先会实例化根节点下的A分支,然后再实例化A节点下的B分支,再实例化B节点下的C节点,最后要给每个存入单次的最后一个节点一个特殊标记。
操作
1、查询字符串:find(ABC)
当在字典树中搜索单词ABC时,就按照单次字母的顺序依次查找,最后在验证单次最后一个字母是否有结束符。
2、查询字符串前缀
代码
class TrieNode{//字典树结构
char c;// 当前字符
HashMap<Charactor, TrieNode> children = new HashMap<Charactor, TrieNode>();// 表示每个节点的26个虚分支
boolean hasWord;//表示当前位是否为结尾
public TrieNode(char c){//构造函数
this.c = c;
}
}