每日一题前缀树-Map实现
Posted 唐宋xy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日一题前缀树-Map实现相关的知识,希望对你有一定的参考价值。
解析
上一道题使用了前缀树的第一种实现方式–数组来实现,这里采用前缀树的第二种实现方式来实现–Map
优点是,可以兼容不同的类型,使用数组只能兼容小写的字母
代码实现
public class TrieTree2
public static class Node
private int pass;
private int end;
private Map<Integer, Node> nexts; // 当前节点下所有子节点,key->字母的路径,Node该路径对应的节点
public Node()
pass = 0;
end = 0;
nexts = new HashMap<>();
public static class Trie
private Node root;
public Trie()
root = new Node();
public void insert(String word)
if(word == null)
return;
char[] str = word.toCharArray();
Node node = root;
node.pass++;
int index = 0;
for (int i = 0; i < str.length; i++)
index = (int)str[i];
if(!node.nexts.containsKey(index))
node.nexts.put(index, new Node());
node = node.nexts.get(index);
node.pass++;
node.end++;
public void delete(String word)
if(word == null)
return;
char[] str = word.toCharArray();
Node node = root;
int index = 0;
for (int i = 0; i < str.length; i++)
index = str[i];
if(--node.nexts.get(index).pass == 0)
node.nexts.remove(index);
return;
node = node.nexts.get(index);
node.end--;
以上是关于每日一题前缀树-Map实现的主要内容,如果未能解决你的问题,请参考以下文章