Trie前缀树(字典树)的java实现
前缀树结构(Trie)是一种比较特别的数据结构,用来存多个字符串,如果你想查找以某个前缀开头的字符串有几个?或者某个字符串出现了多少次?那么它就派上用场了。
思路:简单得说,我们用链表的底层来做这个前缀树,每个Node有3个属性, pass:经过这个节点的时候pass+1 end:当到达最后节点end+1 next:当前节点的下个节点,可能有多个,所以我们用HashMap<Integer,Node>来存储,key是ASCII码(节点值),value是下个节点对象。 每当我们存一个字符串,遍历每个字符,字符也就是节点,经过则pass++,最后个字符结束则end++。当我们查询前缀出现了几次,直接遍历完前缀字符串,取最后一位的pass值就是前缀的频次数了。当我们要查找某个完整字符串的频次,就遍历完字符串,取最后一位的end值即可。如下图所示:加了a和ab两个字符串
下面我们用java实现一个前缀树,包含添加、查找前缀频次,字符串频次,字符串个数,删除字符串的功能。