码迷,mamicode.com
首页 > 其他好文 > 详细

Trie树(字典树)整理

时间:2019-11-06 23:17:24      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:++   tree   color   路径   opened   可见   insert   oid   字符串   

字典树 (Trie)

用于存储字符串。树的每条边恰好表示一个字符,每个节点代表从根到该节点的路径所对应的字符串。

简介与操作实现可见蓝书P82~83。

  Trie字典树很好地利用了前缀,节省了很多空间。

技术图片
 1 //先说明一下:本代码段的字符串d的下标都是从1开始
 2 inline void insert(char *d)//向Trie树插入字符串d 
 3 {
 4     int l=strlen(d+1),now=0,num;
 5     for(int i=1;i<=l;++i)
 6     {
 7         num=d[i]-a;//字符化为数字下标 
 8         if(!tree[now][num])//当前节点不存在该字母的边,即该字母还未在当前节点插入过 
 9             tree[now][num]=++cnt;
10         now=tree[now][num];
11     }
12     ed[now]=1;//最后标明一下字符串结尾节点,说明该节点代表了一个已插入过的字符串 
13 }
14 
15 inline int fin(char *d)从Trie树查询字符串d 
16 {
17     int  l=strlen(d+1),now=0,num;
18     for(int i=1;i<=l;++i)
19     {
20         num=d[i];
21         if(!tree[now][num])//不存在对应节点了,说明Trie中没有这个串
22             return 0;
23         now=tree[now][num];
24     }
25     return ed[now];//查询到最后还要看当前节点是否代表一个插入过Tire树的字符串
26 }
操作实现的核心代码

应用:

  

Trie树(字典树)整理

标签:++   tree   color   路径   opened   可见   insert   oid   字符串   

原文地址:https://www.cnblogs.com/InductiveSorting-QYF/p/11808930.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!