Trie树---前缀最相似匹配
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树---前缀最相似匹配相关推荐
- 算法 | 动画+解析,轻松理解「Trie树」
Trie这个名字取自"retrieval",检索,因为Trie可以只用一个前缀便可以在一部字典中找到想要的单词. 虽然发音与「Tree」一致,但为了将这种 字典树 与 普通二叉树 ...
- 【数据结构与算法】【字符串匹配】Trie树
单模式串匹配 BF 算法和 RK 算法 BM 算法和 KMP 算法 多模式串匹配算法 Trie 树和 AC 自动机 一. 什么是"Trie树"? 1. 他是一种树形结构,是一种专门 ...
- Trie 树是什么样的数据结构?有哪些应用场景?
作者 | 神奕 来源 | 前端应届生 头图 | 下载于视觉中国 出品 | CSDN云计算(ID:CSDNcloud) 在计算机科学中,trie,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中 ...
- 看动画轻松理解「Trie树」
作者 | 程序员小吴 责编 | 胡巍巍 扎心!"我学了半年 Python,还是找不到工作" https://edu.csdn.net/topic/python115?utm_sou ...
- 35.Trie树:如何实现搜索引擎的搜索关键词提示功能
文章目录 1. 什么是"Trie树"? 2. 如何实现一棵Trie树? 3.Trie树真的很耗内存吗? 4.Trie树与散列表.红黑树的比较 5. 解答开篇 问题:搜索引擎的关键词 ...
- java单词匹配算法_前端学数据结构与算法(八): 单词前缀匹配神器-Trie树的实现及其应用...
前言 继二叉树.堆之后,接下来介绍另外一种树型的数据结构-Trie树,也可以叫它前缀树.字典树.例如我们再搜索引擎里输入几个关键字之后,后续的内容会自动续上.此时我们输入的关键词也就是前缀,而后面的就 ...
- python Trie树和双数组TRIE树的实现. 拥有3个功能:插入,删除,给前缀智能找到所有能匹配的单词...
#coding=utf-8 #字典嵌套牛逼,别人写的,这样每一层非常多的东西,搜索就快了,树高26.所以整体搜索一个不关多大的单词表 #还是O(1). ''' Python 字典 setdefault ...
- Trie(前缀树/字典树)及其应用
from:https://www.cnblogs.com/justinh/p/7716421.html Trie,又经常叫前缀树,字典树等等.它有很多变种,如后缀树,Radix Tree/Trie,P ...
- trie树查找前缀串_Trie数据结构(前缀树)
trie树查找前缀串 by Julia Geist Julia·盖斯特(Julia Geist) A Trie, (also known as a prefix tree) is a special ...
最新文章
- NB-IoT模组低功耗设计:DRX、eDRX和PSM(NB-IoT专栏—拓展篇2)
- LCT维护子树信息(BZOJ4530:[BJOI2014]大融合)
- 【机器视觉】 dev_unmap_prog算子
- oracle trace发起用户,Oracle 使用TRACE进行SQL性能分析
- UICollectionViewDelegateFlowLayout 使用
- mysql使用存储过程循环修改数据
- spacy和en安装
- 甲A十年十大悲情时刻回顾 谁的眼泪在空中飞舞?
- 欧拉函数,欧拉公式,降幂公式
- 【网络安全学习】渗透测试篇01-DVWA靶场环境搭建教程
- 鼠标中键(滚轮)和axMapControl之间的交互
- 计算机应用程序没声音,电脑没声音怎么办
- 关于mirro多仓库配置的一些问题
- modelsim is exiting with code:211 10秒后自动关闭退出
- node内存溢出问题 Javascript Heap out of memory
- T检验、F检验、卡方检验、互信息法及机器学习应用
- 2021年R1快开门式压力容器操作考试技巧及R1快开门式压力容器操作证考试
- 「切图仔日常」浅谈加载动画两板斧
- 京瓷4501i打印机扫描步骤_京瓷TASKalfa4501i说明书
- java鲜花购物平台结论_基于ssh/bs/java/asp.net/php/web/安卓的鲜花购物网站
热门文章
- IOS view的圆角和阴影并存
- 2010年的最后一天,我又辞工(日记)
- java为什么要分代回收_浅谈Java堆内存分代回收
- linux安装cd dev ls,linux 第一节 安装
- 没有配置默认路由_网络路由选择原理
- go兼容java_兼容dubbo的微服务框架dubbogo;dubbo的完整go语言实现
- inode linux_Linux中的inode是什么?
- mysql查询结果输出文件_如何将MySQL查询输出保存到文件?
- primefaces_Primefaces单选按钮,复选框示例
- java功能模块_Java 13功能