1.前缀树的定义1)单个字符串中,字符从前到后加入多叉树2)字符放在边上,节点上有独占数据项(常见的传值和端值)3)示例添加方法,每个字符串从根节点开始添加,如果没有路径则创建,如果有路径则重复使用节点的结束值加1的函数:更方便完成前缀2相关的查询,简化的前缀树只能存储26个小写字母组成的字符串/***字符类型:只有26个小写字母**@authorJava与算法学习:周一*/publicstaticclassNode1{//当前节点被传递了多少次privateintpass;//有多少个字符串以当前节点结尾privateintend;//当前节点的所有子节点privateNode1[]nexts;//节点只存储26个小写字母publicNode1(){pass=0;结束=0;//node[i]==null,节点不存在nexts=newNode1[26];}}publicstaticclassTrie1{privateNode1root;publicTrie1(){root=newNode1();}/***添加一个字符串到前缀树中*/publicvoidinsert(Stringword){==ifnull(word/Upperchar[]chars=word.toCharArray();for(charaChar:chars){//当前字符应该走的路径path=aChar-'a';//如果当前节点路径对应的节点不存在,则新建一个if(node.nexts[path]==null.node){nexts[path]=newNode1();}//当前节点的路径path对应的节点必须已经存在//所以当前节点来到路径path对应的节点node=node.nexts[path];//字符已经到达该节点,修改pass值node.pass++;}}//添加字符后,修改最后一个节点的结束值node.end++;}/***单词word之前添加了多少次*/publicintsearch(Stringword){if(word==null){return0;}intindex=0;char[]chars=word.tochararray();//开始寻找node1node1node=root;for(charachars){//当前字符应该走的路径index=aChar-'a';//当前节点的索引路径对应一个不存在的节点,直接返回if(node.nexts[index]==null){nodeofexreturnind0;/}如果路径对应的节点存在,则当前搜索节点来到索引路径对应的节点node=node.nexts[索引];}}//当前节点的最后一个结束值是该词被添加的次数returnnode.end;}/***在所有添加的字符串中,有多少是pre前缀*/publicintprefixnumber(stringpre){if(pre==null){return0;}intindex=0;//开始寻找node1node=root;//一个一个地查找charts=pre.tocharray。();for(charaChar:chars){//当前字符应该走的路径index=aChar-'a';//当前节点的index路径对应的节点不存在,直接返回if(node.nexts[index]==null){return0;}}//当前节点的索引路径对应的节点存在,则当前搜索节点来到索引路径对应的节点node=node.nexts[index];值为prereturnnode.pass前缀的数字;}/***删除前缀树中的一个字符串*/publicvoiddelete(Stringword){//只有该字符串存在才执行删除逻辑if(search(word)!=0){//从根节点开始Node1节点=根;//修改根节点的pass值node.pass--;整数索引=0;char[]chars=word.tochararray();for(charachars){//当前字符应该走的路径index=achar-'a';//当前节点该节点对应的节点Pass的通行证。将值减一if(--node.nexts[index].pass==0){//如果减一后为0,则表示没有字符串经过该节点//清除对应的节点本节点索引路径帮助Gcnode.nexts[Index]=NULL;return;}//减一后不为0,说明有字符串经过该节点//当前节点移动到索引路径nodenode=node.nexts[index];}以及算法学习:Monday*/publicstaticclassNode2{//当前节点已经传了几次privateintpass;//有多少个字符串以当前节点结尾privateintend;//当前节点的所有子节点,Key节点对应的字符串转换为整数后的ASCII码值privateHashMap
