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树的实现相关推荐

  1. [搜索]Trie树的一种实现

    trie树也叫字典树,搜索树等. 如图所示 下面是用stl 的map来实现 class trie_item_c { public:trie_item_c(){}trie_item_c(const ch ...

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

    一.诞生原因 传统字符串比较时,需要将待比较的字符串与字符串集合中每一个串进行比较,结果比较浪费时间. Trie 树的发明就是为了解决上述问题. 二.基本信息 又称字典树,是一种树形结构,是一种哈希树 ...

  3. 720 词典中最长的单词(Trie树)

    1. 问题描述: 给出一个字符串数组words组成的一本英语词典.从中找出最长的一个单词,该单词是由words词典中其他单词逐步添加一个字母组成.若其中有多个可行的答案,则返回答案中字典序最小的单词. ...

  4. c语言 trie树,C语言实现Trie树(字典树)的插入查找删除与遍历操作

    Trie树,也称作是字典树,是一种哈希树的变种,查询效率较高.Trie树可以用于统计或者排序大量的字符串,比如对一系列字符串按照字典序排序. 字典树是一个多叉树,每一个节点上存储的不是一个字符串,而是 ...

  5. 字符串匹配数据结构 --Trie树 高效实现搜索词提示 / IDE自动补全

    文章目录 1. 算法背景 2. Trie 树实现原理 2.1 Trie 树的构建 2.2 Trie树的查找 2.3 Trie树的遍历 2.4 Trie树的时间/空间复杂度 2.5 Trie 树 Vs ...

  6. Trie 树——搜索关键词提示

    当你在搜索引擎中输入想要搜索的一部分内容时,搜索引擎就会自动弹出下拉框,里面是各种关键词提示,这个功能是怎么实现的呢?其实底层最基本的就是 Trie 树这种数据结构. 1. 什么是 "Tri ...

  7. Trie 树——搜索关键词提示 1

    当你在搜索引擎中输入想要搜索的一部分内容时,搜索引擎就会自动弹出下拉框,里面是各种关键词提示,这个功能是怎么实现的呢?其实底层最基本的就是 Trie 树这种数据结构. 1. 什么是 "Tri ...

  8. 程序员面试金典 - 面试题 17.17. 多次搜索(Trie树)

    文章目录 1. 题目 2. 解题 2.1 暴力超时 2.2 Trie树 1. 题目 给定一个较长字符串big和一个包含较短字符串的数组smalls,设计一个方法,根据smalls中的每一个较短字符串, ...

  9. LeetCode 212. 单词搜索 II(Trie树+DFS)

    1. 题目 给定一个二维网格 board 和一个字典中的单词列表 words,找出所有同时在二维网格和字典中出现的单词. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中"相邻&qu ...

最新文章

  1. BF法-字符模式匹配
  2. 2018年08月19日发烧诸事记
  3. python知识:all、dict()、min、setattr、any函数
  4. 微分方程的数值解法与程序实现 pdf_初中数学知识点|一元一次方程的概念及讲解(二)建议收藏!内含pdf版...
  5. synchronized原理_synchronized 关键字底层原理
  6. matlab没有找到图形用户界面,MATLAB中不能设计图形用户界面。
  7. Android第一个程序截图,java – 在Android上截取屏幕截图
  8. uploadify没反应
  9. String当中的高效函数(优化)
  10. 2022年全球与中国网络处理器市场现状及未来发展趋势
  11. 雨后小故事动态邪恶_当您遇到“邪恶”的问题时,使故事变小
  12. ios vue 添加本地音乐_vue怎么添加音乐 vue怎么添加手机音乐
  13. 从华为智慧生活APP的智能场景,谈到建成华为专属的智慧生活管理后台
  14. 从6·18到广袤未来,PC世界需要一位猎光者
  15. 英语影视台词---绿皮书(1)
  16. java多线程---重入锁ReentrantLock
  17. AI规则迎来进化:从“阿西莫夫三原则”到“李彦宏四原则”
  18. 快来直播:仓库是时候实施物联网了吗
  19. 量子力学奇妙之旅-从相对论下薛定谔方程到量子场论
  20. 实现月、季度、年的相关数据

热门文章

  1. 高级软件工程第九次作业:东理三剑客团队作业-随笔4
  2. Java -- XStreamAlias 处理节点中的属性和值
  3. RabbitMQ(三) ——发布订阅
  4. JAVA Feign
  5. JS魔法堂:彻底理解0.1 + 0.2 === 0.30000000000000004的背后 1
  6. 最简单的视音频播放演示样例5:OpenGL播放RGB/YUV
  7. SGU 248. Integer Linear Programming( 背包dp )
  8. T级图片数据Cache思路以及图片服务器搭建方法
  9. C++ Primer 小贴士之第一二章
  10. 自己遇到oracle的错误记录