字典树
来源:互联网 发布:java 图片上传 base64 编辑:程序博客网 时间:2024/05/17 00:58
字典树,Trie树,是一种树形结构,是一种哈希树的变种,典型功能是用于统计,排序和保存大量的字符串。优点是:利用字符串的公共前缀来节约存储空间,最大限度的减少无谓的字符串的比较。
代码模板:
#define maxn 26 //由题目的字符总数决定typedef struct TrieNode{ bool isStr; struct TrieNode *next[maxn];} Trie;void insertTrie(Trie *root , const char *str){ if(root == NULL || *str =='\0') return ; Trie *p = root ; while(*str != '\0') { int id = *str - 'a'; if(p->next[id] == NULL) { Trie *temp = (Trie *)malloc(sizeof(Trie)); for(int i=0;i<maxn;i++) { temp->next[i] = NULL; } temp->isStr = false; p->next[id] = temp; p = p->next[id]; } else { p = p->next[id]; } str++; } p->isStr = true;}int searchTrie(Trie *root , const char *str){ Trie *p = root; int len = strlen(str); for(int i=0;i<len;i++) { if(p->isStr == false && p->next[*str-'a'] == NULL) return 0; if(p->next[*str-'a']->isStr == true) return 1; //已经存在str的子串 p=p->next[*str-'a']; str++; } return 2;}void dealTrie(Trie *root){ //先对一个结点递归的查找maxn个子树,遍历完成后,释放根树内存 for(int i=0;i<maxn;i++) { if(root->next[i] != NULL) { dealTrie(root->next[i]); } } free(root);}
0 0
- 字典树
- 字典树
- 字典树
- 字典树
- 字典树
- 字典树。。
- 字典树
- 字典树
- 字典树
- 字典树
- 字典树
- 字典树
- 字典树
- 字典树
- 字典树
- 字典树
- 字典树
- 字典树
- Python安装常见问题(1):zipimport.ZipImportError: can't decompress data
- 剑指offer 面试题3:二维数组中的查找
- Android像素(px)与dip
- mysql出现错误“ Every derived table must have its own alias”
- 数字三角形问题
- 字典树
- 关于linux中浏览器无法观看视频(未安装flash导致的错误)!!!!
- Atlas:手淘Native容器化框架和思考
- C#获取本地计算机名,IP,MAC地址,硬盘ID
- tomcat启动超时问题
- 39. Combination Sum**
- leetcode stack 232. Implement Queue using Stacks
- 重拾java基础(八):继承、多肽总结
- java基础四控制流程