[搜索]Trie树的实现
trie这种树也被称为线索,搜索树。
正如图
以下是用stl 的map来实现
class trie_item_c
{
public:trie_item_c(){}trie_item_c(const char nm){name = nm;}void set_name(const char nm){name = nm;}trie_item_c * get_child(const char nm){map<const char ,trie_item_c*>::const_iterator it = children.find(nm);if(it != children.end())return it->second;else{trie_item_c *cld = new trie_item_c(nm);children.insert(pair <const char ,trie_item_c*>(nm,cld));return cld;}}bool find(const char* dic){if(!dic || *dic == '\0'){if(children.end() != children.find('\0'))return true;return false;}const char* temp = dic;map<const char ,trie_item_c*>::const_iterator it = children.find(*temp);if(it == children.end())return false;return it->second->find(++temp);}void print(){printf("%c",name);map<const char ,trie_item_c*>::const_iterator it = children.begin();for(;it != children.end();it++){it->second->print();}printf("\n");}virtual ~trie_item_c(){map<const char ,trie_item_c*>::const_iterator it = children.begin();while(it != children.end()){delete it->second;children.erase(it);it = children.begin();}}
private:map<const char ,trie_item_c*> children;char name;};
以下代码是构建树的过程
for(const char* dic = lst.first_string();dic;dic = lst.next_string()){trie_item_c *temp = root;for(int i=0;i<str_temp.str_len();i++){char c = str_temp.get(i);trie_item_c *item = temp->get_child(c);temp = item;}//add one null childtemp->get_child('\0');}
推断是否一个字root在,只需要调用root->find("book");您可以。
[搜索]Trie树的实现相关推荐
- [搜索]Trie树的一种实现
trie树也叫字典树,搜索树等. 如图所示 下面是用stl 的map来实现 class trie_item_c { public:trie_item_c(){}trie_item_c(const ch ...
- 数据结构与算法 / 字符串匹配 / Trie 树
一.诞生原因 传统字符串比较时,需要将待比较的字符串与字符串集合中每一个串进行比较,结果比较浪费时间. Trie 树的发明就是为了解决上述问题. 二.基本信息 又称字典树,是一种树形结构,是一种哈希树 ...
- 720 词典中最长的单词(Trie树)
1. 问题描述: 给出一个字符串数组words组成的一本英语词典.从中找出最长的一个单词,该单词是由words词典中其他单词逐步添加一个字母组成.若其中有多个可行的答案,则返回答案中字典序最小的单词. ...
- c语言 trie树,C语言实现Trie树(字典树)的插入查找删除与遍历操作
Trie树,也称作是字典树,是一种哈希树的变种,查询效率较高.Trie树可以用于统计或者排序大量的字符串,比如对一系列字符串按照字典序排序. 字典树是一个多叉树,每一个节点上存储的不是一个字符串,而是 ...
- 字符串匹配数据结构 --Trie树 高效实现搜索词提示 / IDE自动补全
文章目录 1. 算法背景 2. Trie 树实现原理 2.1 Trie 树的构建 2.2 Trie树的查找 2.3 Trie树的遍历 2.4 Trie树的时间/空间复杂度 2.5 Trie 树 Vs ...
- Trie 树——搜索关键词提示
当你在搜索引擎中输入想要搜索的一部分内容时,搜索引擎就会自动弹出下拉框,里面是各种关键词提示,这个功能是怎么实现的呢?其实底层最基本的就是 Trie 树这种数据结构. 1. 什么是 "Tri ...
- Trie 树——搜索关键词提示 1
当你在搜索引擎中输入想要搜索的一部分内容时,搜索引擎就会自动弹出下拉框,里面是各种关键词提示,这个功能是怎么实现的呢?其实底层最基本的就是 Trie 树这种数据结构. 1. 什么是 "Tri ...
- 程序员面试金典 - 面试题 17.17. 多次搜索(Trie树)
文章目录 1. 题目 2. 解题 2.1 暴力超时 2.2 Trie树 1. 题目 给定一个较长字符串big和一个包含较短字符串的数组smalls,设计一个方法,根据smalls中的每一个较短字符串, ...
- LeetCode 212. 单词搜索 II(Trie树+DFS)
1. 题目 给定一个二维网格 board 和一个字典中的单词列表 words,找出所有同时在二维网格和字典中出现的单词. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中"相邻&qu ...
最新文章
- BF法-字符模式匹配
- 2018年08月19日发烧诸事记
- python知识:all、dict()、min、setattr、any函数
- 微分方程的数值解法与程序实现 pdf_初中数学知识点|一元一次方程的概念及讲解(二)建议收藏!内含pdf版...
- synchronized原理_synchronized 关键字底层原理
- matlab没有找到图形用户界面,MATLAB中不能设计图形用户界面。
- Android第一个程序截图,java – 在Android上截取屏幕截图
- uploadify没反应
- String当中的高效函数(优化)
- 2022年全球与中国网络处理器市场现状及未来发展趋势
- 雨后小故事动态邪恶_当您遇到“邪恶”的问题时,使故事变小
- ios vue 添加本地音乐_vue怎么添加音乐 vue怎么添加手机音乐
- 从华为智慧生活APP的智能场景,谈到建成华为专属的智慧生活管理后台
- 从6·18到广袤未来,PC世界需要一位猎光者
- 英语影视台词---绿皮书(1)
- java多线程---重入锁ReentrantLock
- AI规则迎来进化:从“阿西莫夫三原则”到“李彦宏四原则”
- 快来直播:仓库是时候实施物联网了吗
- 量子力学奇妙之旅-从相对论下薛定谔方程到量子场论
- 实现月、季度、年的相关数据
热门文章
- 高级软件工程第九次作业:东理三剑客团队作业-随笔4
- Java -- XStreamAlias 处理节点中的属性和值
- RabbitMQ(三) ——发布订阅
- JAVA Feign
- JS魔法堂:彻底理解0.1 + 0.2 === 0.30000000000000004的背后 1
- 最简单的视音频播放演示样例5:OpenGL播放RGB/YUV
- SGU 248. Integer Linear Programming( 背包dp )
- T级图片数据Cache思路以及图片服务器搭建方法
- C++ Primer 小贴士之第一二章
- 自己遇到oracle的错误记录