主页 > 其他  > 

算法笔记——字典树

算法笔记——字典树
什么是字典树?

    一棵字典树树就像一个小型字典一样,当你拿到一个字想去字典上查的时候(以拼音查法为例),你会先查这个拼音的开头字母,然后在按需查找他下一个字母直到找到相对应的拼音才可以。字典树也是如此,他是按照该字符串的先后顺序而来(他的查找是在每一个层中查找相对应的字符,如果能查到,下一个字符的范围将会缩小在他的子树中查找;没有查到就可退出)。具体看下面例子理解。

对于上述图片是用来寻找“aca”、“ba”相关的例子,只有在找到第一个字母之后才会往下寻找,比如上述图片中寻找“ca”这个字符串就不可能,在第一层中没有字符c,所以直接返回no。

字典树算法板子

这个板子写的时候在查找不到的情况会返回0,而不是no。

int node[100005][30]; int a[100005]; int k; void in(string s){ int x=0; for(int i=0;i<s.size();i++){ int y=s[i]-'a'; if(node[x][y]==0) node[x][y]=++k; x=node[x][y]; } a[x]++; } int find(string s){ int x=0; for(int i=0;i<s.size();i++){ int y=s[i]-'a'; if(!node[x][y]) return 0; x=node[x][y]; } return a[x]; } 字典树例题

C-智乃的Notepad(Easy version)_2025牛客寒假算法基础集训营3

相关解析:

牛客训练营(三)补题-CSDN博客

个人感觉:

      此类题目出现的时候,容易理解成栈能解决的题,会有一定思路上的障碍,要合理分析。

标签:

算法笔记——字典树由讯客互联其他栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“算法笔记——字典树