字典树 (解析加模版)
来源:互联网 发布:网络协议组成部分为() 编辑:程序博客网 时间:2024/05/18 01:44
字典树:又叫trie树,单词查找树。是一种树形结构,典型的用于统计。经常用于统计一片文章当中出现确定的单词的次数,它的优点就在于:省略了相同前缀的比较。以下图为例:用单词carbohy,carhure,english,englnee来构造的trie树。
当你用trie树来查找一个单词的时候,就像查字典是一样的,先查第一个单词,然后查第二个,在树中我们用深度遍历就可以实现。当然你不一定存储字母也可以存储数字什么的,根据具体情况来选择。
trie树结构定义:
typedef struct node{ int cnt; //用来经过此结点以上前缀的单词数 node* next[26]; //这里只包含小写字母,故是26个} Trie;next数组视情况而定,如果既有小写又有大写就是52,如果还有数字则更多。
接着就是构造trie树了,根据提供的单词构造trie树
过程如下:(跟树的构造类似)
void Creat_Trie(char*str){ int len,i,j; len=strlen(str); Trie *p=&root,*q; for( i=0; i<len; i++){ int id=str[i]-'a'; //在next数组中找到对应位 if( p->next[id]==NULL){ q=new Trie; //如果该字符不存在,动态分配节点 q->cnt=1; for( j=0; j<26; j++) q->next[j]=NULL; p->next[id]=q; p=p->next[id]; } else{ p->next[id]->cnt++; p=p->next[id]; } }}
构造trie树之后查找,这也是trie树重要的功能。
int Find_Trie(char*str){ int len,i,j,id; len=strlen(str); Trie*p=&root; for( i=0; i<len; i++){ id=str[i]-'a'; p=p->next[id]; if( p==NULL) return 0; } return p->cnt;}
- 字典树 (解析加模版)
- 字典树 (解析加模版)
- 字典树 模版
- 字典树 基础模版
- 字典树模版
- 字典树模版
- 字典树模版
- 字典树(模版+源码)
- 字典树模版
- 字典树(讲解+模版)
- 字典树 讲解+模版
- HDU1251-字典树模版
- 字典树模版
- 字典树模版
- 《字典树》数组模版
- 字典树模版
- 字典树(讲解+模版)
- 字典树(讲解+模版)
- jquery(五)大话jquery选择器
- PHP常用函数
- ZOJ 2423
- 怎样把网站变为灰色
- php多进程
- 字典树 (解析加模版)
- 自定义listview的显示(重写Adapter)
- krpano Flash Panorama Viewer应用及介绍
- UpdateWindow和Invalidate
- Memory Analysis for Android Applications
- ActionScript最新3D引擎项目(转载)
- ORA-15001
- 使用Javassist对.class文件进行修改(AOP面向切面编程)
- 正则表达式30分钟入门