Trie(前缀树)和ternary trie和binary search tree
1 什么是trie
trie是一棵多叉树,假如存放的是由26个字母(不区分大小写)构成的字符串的话,那么就是一棵26叉树。
trie树是一棵前缀树,因为每个结点只保存字符串中的一个字符,整个字符串保存在路径中。
trie树的根结点里面不保存任何字符,因为根结点是下面所有路径的前缀,如果固定为一个字符的话,那么该trie树只能保存以该字符为前缀的字符串了。
trie树的每个结点要保存两类数据,一个是字符(root结点不保存),一个是到该字符所有后缀的结点的指针,比如26个字母的话,就是到该字符所有可能后缀的数组,一个保存26个指针的数组。
如果字符串不是很充分的话,trie树会浪费空间,因为会存在很多的null指针。
2 什么是binary search tree
和trie将key存放在树的路径中不同的是,binary search tree将key存放在每个结点中
binary search tree的左子树中所有的结点的值小于该结点的值,所有的右子树中的所有结点的值大于该结点的值。
所以,在binary search tree中查找时,每次比较之后,如果小于该结点的值的话,就往其左子树中继续找,如果大于该结点的值的话,就往其右子树中继续找。
因为涉及到一个平衡的问题,所以还有红黑树和avl树,它们都是自平衡的binary search tree。
3 什么是ternary trie
ternary trie是trie和binary search tree的杂交体。
ternary trie也是将key保存在路径中,但是和trie不同的是,key的整个字符串不是保存在连续的路径中。每个结点只保存一个前缀字符。
ternary trie的每个结点都保存三个指针,一个是字符等于该结点处保存的字符的子树的指针,一个是字符小于该结点处保存的字符的子树的指针,还有一个是字符大于该结点处保存的字符的子树的指针。
由于一个结点只保存一个前缀字符,所以,很可能该前缀字符并不是我们当前要找的字符,那么就要继续找子树,直到找到了当前字符为止,因此保存key字符串的路径可能不是连续的,是断开的。因此,ternary trie也不需要像trie那样root结点不能用。
4 怎样创建trie
见分析。
5 怎样创建binary search trie
见分析。
6 怎样创建ternary trie
见分析。
最新文章
- [No000095].Net入门级逆向工程-1.SpreadsheetGear汉化
- VirtualBox上搭建Ubuntu开发环境
- linux shell重定向总结
- Mac OS 的一点历史: Mac OS, Mac OSX 与Darwin
- 从键盘输入成绩,找出最高分,并输出学生成绩等级。成绩>;=最高分-10,为A,成绩>;=最高分-20,为B,成绩>;=最高分-30,为C,其余等级为D
- 一篇让Java程序猿随时可以翻看的Oracle总结
- 纯css3样式属性制作各种图形图标
- SqlServer中输出错误消息
- 让你提前认识软件开发(23):怎样在C语言中运行shell命令?
- SuSE(SLES)安装配置syslog-ng日志server,可整合splunk
- IOS中 init和initialize
- Chris Richardson微服务翻译:微服务架构中的服务发现
- 【Java框架型项目从入门到装逼】第十二节 项目分层
- Eureka-服务注册与发现组件
- 谁记录了mysql error log中的超长信息
- HR_Array Manipulation
- MacOS安装Go2Shell
- 【产品设计】【转】APP界面设计规范编写指南(人人都是产品经理)
- 《算法》第四章部分程序 part 18
- Module ngx_http_v2_module
热门文章
- centos7 ftp 500 OOPS: cannot change directory:/var/ftp/xutong/
- 牛客网暑期ACM多校训练营(第四场) J 贪心
- javax.servlet.jsp.JspTagException: Neither BindingResult nor plain target object for bean (蛋疼死我了)
- 洛谷 P1938 [USACO09NOV] 找工就业Job Hunt
- 【Codeforces 827B】High Load
- pip安装requests库失败
- sql无效字符 执行sql语句报错解决方案
- laravel 文件删除
- windows 环境下.Net使用Redis缓存
- POJ-1861,Network,最小生成树水题,,注意题面输出有问题,不必理会~~