一、前缀树
1、前缀树(Trie),又称字典树或单词查找树,是一种用于存储字符串集合的数据结构。
2、前缀树的操作
(1)单个字符串中,字符从前到后的加到一棵多叉树上
(2)字符放在路上,节点上有专属的数据项(常见的是pass和end值)
(3)所有样本都这样添加,如果没有路就新建,如有路就复用
(4)沿途节点的pass值增加1,每个字符串结束时来到的节点end值增加1
3、构建前缀树例子
["abc", "abd", "kst"]
int pass:在一个一个节点加入的过程中,当前节点通过了几次
int end:在我加字符的过程中,这个节点,成为了多少字符串的结尾
添加字符串abc,初始节点:
添加字符串abc中的a:
添加字符串abc中的b:
添加字符串abc中的c:
添加字符串abd中的a:
有通向a的路,所以增加P值
添加字符串abd中的b:
有通向b的路,所以增加P值
添加字符串abd中的d:
没有通向d的路,增加一条路
添加字符串kst:
4、查询abd插入了几次
有没有走向a的路,有没有走向b的路,有没有走向d的路,找到后看e值是多少就是加入了几次
5、查询加入的所有字符串,有多少字符串以a做前缀
来的a的位置,P值就是有多少字符串以a做前缀