Trie(字典树)详解与C++实现 |
您所在的位置:网站首页 › 前缀树实现 › Trie(字典树)详解与C++实现 |
文章目录
参考资料Trie Introduction(介绍字典树)C++实现Trie 应用
参考资料
甜姨的力扣题解:https://zhuanlan.zhihu.com/p/120150816力扣官方题解:https://leetcode-cn.com/problems/implement-trie-prefix-tree/solution/shi-xian-trie-qian-zhui-shu-by-leetcode/https://leetcode-cn.com/problems/implement-trie-prefix-tree/solution/trie-tree-de-shi-xian-gua-he-chu-xue-zhe-by-huwt/
1.2.资料都是基于Java来对Trie进行实现,3.是c++的实现,原理都介绍的非常棒! Trie Introduction(介绍字典树)Trie也叫字典树、前缀树、单词查找树等等,它常用来存储单词(和语种无关),相比于HashMap等操作,Trie能在存储多个具有相同前缀的键时,使用较少的空间。并且Tire树只需要O(M)的时间复杂度,其中M为键长。 下图演示了一个保存8个单词的字典树结构,8个单词分别是:“A”, “to”, “tea”, “ted”, “ten”, “i”, “in”, “inn”。(蓝色节点表示单词的结尾字符) 然后相比一般的多叉树,Trie在节点的数据结构设计上也有很多不同。 class Trie{ private: bool flag; Trie* next[R]; };其中val表示的是该节点是否为尾节点(是不是对应键的结尾),next[R]表示的是指向R个子节点的链接。比如我们现在要表示英语单词的话,R就为26。 说明 因为flag只用来表示该节点是否为一个单词的结尾,然后next[R]可以看做是指向26个字母的映射表,保存了对于当前节点而言,下一个可能出现的字符链接。所以,上面的图并不是字典树真正的存储形式,我们看下图: 这是一个包含三个单词‘sea’,‘she’,‘sells’的字典树完整形式。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |