字典树学习
来源:互联网 发布:如何领淘宝内部优惠券 编辑:程序博客网 时间:2024/05/20 20:22
字典树又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,
排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。
它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,
查询效率比哈希表高。
它有3个基本性质:
根节点不包含字符,除根节点外每一个节点都只包含一个字符;
从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串;
每个节点的所有子节点包含的字符都不相同。
其基本操作有:查找、插入和删除,当然删除操作比较少见。
搜索字典项目的方法为:
(1) 从根结点开始一次搜索;
(2) 取得要查找关键词的第一个字母,并根据该字母选择对应的子树并转到该子树继续进行检索;
(3) 在相应的子树上,取得要查找关键词的第二个字母,并进一步选择对应的子树进行检索。
(4) 迭代过程……
(5) 在某个结点处,关键词的所有字母已被取出,则读取附在该结点上的信息,即完成查找。其他操作类似处理.
字典树模板:
#include <iostream>
#include <cstdio>
using namespace std;
typedef struct N
{
int flag;
struct N *next[26];
}Node;
Node *Create()
{
Node *p = (Node *)malloc(sizeof(Node));
for(int i = 0; i < 26; i++)
p->next[i] = NULL;
p->flag = 0;
return 0;
}
void insert(char s[])
{
int L = strlen(s);
Node *cur = root;
for(int i = 0; i< L; i++)
{
int t = s[i] - 'a';
if(cur -> next[t] == NULL)
cur = cur -> next[t] =Create();
else
cur = cur->next[t];
}
cur->flag = 1;
}
int query(char s[])
{
int L = strlen(s);
Node* cur = root;
for(int i =0; i <= L; i++)
{
int t = s[i] - 'a';
if(cur->next[t] == NULL)
return 0;
else
cur = cur ->next[t];
}
return cur->flag;
}
int main()
{
}
- 字典树学习
- 字典树学习材料
- 字典树学习
- 学习 字典树
- 字典树学习
- 字典树学习
- 字典树学习小结
- 字典树学习总结
- 字典树 学习笔记
- 【学习笔记】关于字典树
- Trie(字典树)的学习
- 字典树(基础学习)
- 字典树学习与使用
- 字典学习
- 字典学习
- 树学习 ---------字典树(Trie Tree)
- 【学习记录】trie树(字典树)
- 字典树的痛苦学习经历
- N点虚拟主机管理系统 企业版稳定亲测
- linux——编译内核时出现过的问题总结
- aspupload 上传组件下载
- jmail组件 官方稳定版下载
- 3389端口修改软件 Sine官方版
- 字典树学习
- 求助大神!如何批量删除数据库表中某个字段中相同的一段字符!
- 看到有人去面试Java碰到问static的问题,到网上找了几个类似的问题,特此记录
- Oracle的统计分析方法
- [C/C++]_[初级]_[使用C字符串(或者std::string)处理函数获取文件所在目录
- WebView中JS与Java安全地相互调用
- Android Button的使用方法
- iOS 汉字转拼音
- 【CodeForces】463D Gargari and Permutations DP