它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。

它有3个基本性质:
根节点不包含字符,除根节点外每一个节点都只包含一个字符; 从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串; 每个节点的所有子节点包含的字符都不相同。 #include <iostream>
#include<cstring>
#include<cstdio> using namespace std; const int M=;
char word[][];
int wp;
struct node
{
int next[];
int value;
bool end;
}tree[M]; int pi=; void init() //初始化
{
memset(tree,,sizeof(tree)); //将一个数组全部元素赋成0 //只能是-1和0
pi=;
wp=;
} void insert(char * keyword,int value) //建树
{
int index,p,i;
for(i=p=;keyword[i];i++)
{
index=keyword[i]-'a'; //
if(tree[p].next[index]==) //
tree[p].next[index]=pi++; p=tree[p].next[index];
}
tree[p].value=value;
tree[p].end=;
} bool query(char * keyword,int& value)
{
int index,p,i;
for(i=p=;keyword[i];i++)
{
index=keyword[i]-'a';
if(tree[p].next[index]==)
return ;
p=tree[p].next[index];
}
if(tree[p].end)
{
value=tree[p].value;
return ;
}
return ;
} int main()
{
char s1[],s2[],s[];
int i,value;
while(gets(s))
{
if(!strlen(s)) //有字母就不跳出
break; for(i=;i<strlen(s);i++)
{
if(s[i]==' ') //空格
break;
}
strncpy(s1,s,i); //把s的前i位复制给s1
s1[i]=;
strcpy(s2,s+i+); //把s的i位之后复制给s2
strcpy(word[wp],s1); //
insert(s2,wp++); //
}
while(scanf("%s",s)!=EOF)
{
if(query(s,value)) //到相应字母 然后输出
printf("%s\n",word[value]);
else
printf("eh\n"); //没找到输出eh
}
return ;
}

最新文章

  1. InvokeRequired 线程间访问
  2. javascript 中正则表达式应用
  3. thinkphp 验证
  4. .NET项目开发的几个非常重要的项目设置
  5. Python 输出文字带颜色
  6. Java Final, Finally, Finalize
  7. Entity Framework 学习第一天
  8. Cocos2d-x坐标系介绍
  9. ios开发——实用技术篇Swift篇&amp;录音
  10. 【HDU 5370】 Tree Maker(卡特兰数+dp)
  11. HTML5储存
  12. [BC Round#26] Card 【各种水】
  13. python - 执行父类中的方法
  14. Java核心技术,让计算机&quot;一芯多用&quot;的多线程技术
  15. 正则提取文本中的颜色值 #xxxx,不严谨版本
  16. SVN Access to &#39;/svn/Test/!svn/me&#39; forbidden,不能更新解决办法
  17. 【搬运】Tea算法Java实现工具类
  18. iOS日历中给一个事件添加多个提醒
  19. Qt5模块简介
  20. allegro把formate symbol文件从一个文件拷入另一个文件的方法

热门文章

  1. Label标签 自动触发onclick,点击内部的Input
  2. HTML初级教程 表单form
  3. HDU2586 How far away? —— 倍增LCA
  4. 侧方位停车想一次过,掌握边线30cm很重要!
  5. Jquery Plugin模版
  6. hdu-5000 Clone(dp)
  7. Java对象的初始化
  8. 51nod1060:最复杂的数(DFS求反素数)
  9. http 和 ajax 的关系
  10. bzoj 4398 福慧双修——二进制分组