2019独角兽企业重金招聘Python工程师标准>>>

代码引用自:http://zh.wikipedia.org/wiki/Trie

#include <stdio.h>
#include <stdlib.h>
#include <string.h>#define TREE_WIDTH 256#define WORDLENMAX 128struct trie_node_st {int count;struct trie_node_st *next[TREE_WIDTH];
};static struct trie_node_st root={0, {NULL}};static char *spaces=" \t\n/.\"\'()";static int
insert(const char *word)
{int i;struct trie_node_st *curr, *newnode;if (word[0]=='\0') {return 0;}curr = &root;for (i=0; ; ++i) {if (word[i] == '\0') {break;}if (curr->next[ word[i] ] == NULL) {newnode=(struct trie_node_st*)malloc(sizeof(struct trie_node_st));memset(newnode, 0, sizeof(struct trie_node_st));curr->next[ word[i] ] = newnode;} curr = curr->next[ word[i] ];}curr->count ++;return 0;
}static void
printword(const char *str, int n)
{printf("%s\t%d\n", str, n);
}static int
do_travel(struct trie_node_st *rootp)
{static char worddump[WORDLENMAX+1];static int pos=0;int i;if (rootp == NULL) {return 0;}if (rootp->count) {worddump[pos]='\0';printword(worddump, rootp->count);}for (i=0;i<TREE_WIDTH;++i) {worddump[pos++]=i;do_travel(rootp->next[i]);pos--;}return 0;
}int
main(void)
{char *linebuf=NULL, *line, *word;size_t bufsize=0;int ret;while (1) {ret=getline(&linebuf, &bufsize, stdin);if (ret==-1) {break;}line=linebuf;while (1) {word = strsep(&line, spaces);if (word==NULL) {break;}if (word[0]=='\0') {continue;}insert(word);}}/* free(linebuf); */do_travel(&root);exit(0);
}

转载于:https://my.oschina.net/u/240262/blog/81881

Trie树---前缀最相似匹配相关推荐

  1. 算法 | 动画+解析,轻松理解「Trie树」

    Trie这个名字取自"retrieval",检索,因为Trie可以只用一个前缀便可以在一部字典中找到想要的单词. 虽然发音与「Tree」一致,但为了将这种 字典树 与 普通二叉树 ...

  2. 【数据结构与算法】【字符串匹配】Trie树

    单模式串匹配 BF 算法和 RK 算法 BM 算法和 KMP 算法 多模式串匹配算法 Trie 树和 AC 自动机 一. 什么是"Trie树"? 1. 他是一种树形结构,是一种专门 ...

  3. Trie 树是什么样的数据结构?有哪些应用场景?

    作者 | 神奕 来源 | 前端应届生 头图 | 下载于视觉中国 出品 | CSDN云计算(ID:CSDNcloud) 在计算机科学中,trie,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中 ...

  4. 看动画轻松理解「Trie树」

    作者 | 程序员小吴 责编 | 胡巍巍 扎心!"我学了半年 Python,还是找不到工作" https://edu.csdn.net/topic/python115?utm_sou ...

  5. 35.Trie树:如何实现搜索引擎的搜索关键词提示功能

    文章目录 1. 什么是"Trie树"? 2. 如何实现一棵Trie树? 3.Trie树真的很耗内存吗? 4.Trie树与散列表.红黑树的比较 5. 解答开篇 问题:搜索引擎的关键词 ...

  6. java单词匹配算法_前端学数据结构与算法(八): 单词前缀匹配神器-Trie树的实现及其应用...

    前言 继二叉树.堆之后,接下来介绍另外一种树型的数据结构-Trie树,也可以叫它前缀树.字典树.例如我们再搜索引擎里输入几个关键字之后,后续的内容会自动续上.此时我们输入的关键词也就是前缀,而后面的就 ...

  7. python Trie树和双数组TRIE树的实现. 拥有3个功能:插入,删除,给前缀智能找到所有能匹配的单词...

    #coding=utf-8 #字典嵌套牛逼,别人写的,这样每一层非常多的东西,搜索就快了,树高26.所以整体搜索一个不关多大的单词表 #还是O(1). ''' Python 字典 setdefault ...

  8. Trie(前缀树/字典树)及其应用

    from:https://www.cnblogs.com/justinh/p/7716421.html Trie,又经常叫前缀树,字典树等等.它有很多变种,如后缀树,Radix Tree/Trie,P ...

  9. trie树查找前缀串_Trie数据结构(前缀树)

    trie树查找前缀串 by Julia Geist Julia·盖斯特(Julia Geist) A Trie, (also known as a prefix tree) is a special ...

最新文章

  1. NB-IoT模组低功耗设计:DRX、eDRX和PSM(NB-IoT专栏—拓展篇2)
  2. LCT维护子树信息(BZOJ4530:[BJOI2014]大融合)
  3. 【机器视觉】 dev_unmap_prog算子
  4. oracle trace发起用户,Oracle 使用TRACE进行SQL性能分析
  5. UICollectionViewDelegateFlowLayout 使用
  6. mysql使用存储过程循环修改数据
  7. spacy和en安装
  8. 甲A十年十大悲情时刻回顾 谁的眼泪在空中飞舞?
  9. 欧拉函数,欧拉公式,降幂公式
  10. 【网络安全学习】渗透测试篇01-DVWA靶场环境搭建教程
  11. 鼠标中键(滚轮)和axMapControl之间的交互
  12. 计算机应用程序没声音,电脑没声音怎么办
  13. 关于mirro多仓库配置的一些问题
  14. modelsim is exiting with code:211 10秒后自动关闭退出
  15. node内存溢出问题 Javascript Heap out of memory
  16. T检验、F检验、卡方检验、互信息法及机器学习应用
  17. 2021年R1快开门式压力容器操作考试技巧及R1快开门式压力容器操作证考试
  18. 「切图仔日常」浅谈加载动画两板斧
  19. 京瓷4501i打印机扫描步骤_京瓷TASKalfa4501i说明书
  20. java鲜花购物平台结论_基于ssh/bs/java/asp.net/php/web/安卓的鲜花购物网站

热门文章

  1. IOS view的圆角和阴影并存
  2. 2010年的最后一天,我又辞工(日记)
  3. java为什么要分代回收_浅谈Java堆内存分代回收
  4. linux安装cd dev ls,linux 第一节 安装
  5. 没有配置默认路由_网络路由选择原理
  6. go兼容java_兼容dubbo的微服务框架dubbogo;dubbo的完整go语言实现
  7. inode linux_Linux中的inode是什么?
  8. mysql查询结果输出文件_如何将MySQL查询输出保存到文件?
  9. primefaces_Primefaces单选按钮,复选框示例
  10. java功能模块_Java 13功能