详谈树结构(传统树、字典树、hash 树、Merkle Patricia Tree)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了详谈树结构(传统树、字典树、hash 树、Merkle Patricia Tree)相关的知识,希望对你有一定的参考价值。

参考技术A

本文参考: 树结构参考文献

[图片上传失败...(image-83b557-1539180310707)]

[图片上传失败...(image-d6bf01-1539180310707)]

性质1. 节点是红色或黑色,根是黑色,所有叶子都是黑色

性质2. 每个红色节点必须有两个黑色的子节点。(从每个叶子到根的所有路径上不能有两个连续的红色节点,即红黑相间),从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点(简称黑高)。

[图片上传失败...(image-52c714-1539180310707)]

B+树是B树的变体,也是一种多路搜索树:

[图片上传失败...(image-c2ce8e-1539180310707)]

B+ 树的性质:
1.所有关键字都出现在叶子结点的链表中(稠密索引),且链表中的关键字恰好是有序的;
2.不可能在非叶子结点命中;
3.非叶子结点相当于是叶子结点的索引(稀疏索引),叶子结点相当于是存储(关键字)数据的数据层;
4. 更适合文件索引系统。

所以,B*树分配新结点的概率比B+树要低,空间使用率更高。

Tire树称为字典树,又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。

Tire树的三个基本性质:

Tire树的应用:

给出N个单词组成的熟词表,以及一篇全用小写英文书写的文章,请你按最早出现的顺序写出所有不在熟词表中的生词。在这道题中,我们可以用数组枚举,用哈希,用字典树,先把熟词建一棵树,然后读入文章进行比较,这种方法效率是比较高的。

给定N个互不相同的仅由一个单词构成的英文名,让你将他们按字典序从小到大输出。用字典树进行排序,采用数组的方式创建字典树,这棵树的每个结点的所有儿子很显然地按照其字母大小排序。对这棵树进行先序遍历即可。

对所有串建立字典树,对于两个串的最长公共前缀的长度即他们所在的结点的公共祖先个数,于是,问题就转化为求公共祖先的问题。

[图片上传失败...(image-f00bd3-1539180310707)]

[图片上传失败...(image-d70c23-1539180310707)]

[图片上传失败...(image-8a3963-1539180310707)]

[图片上传失败...(image-69461e-1539180310707)]

[图片上传失败...(image-987993-1539180310707)]

[图片上传失败...(image-58f33c-1539180310707)]

参考文献:
1、 http://blog.jobbole.com/111680/
2、 https://blog.csdn.net/mine_song/article/details/63251546
3、 https://www.cnblogs.com/pinard/p/6050306.html
4、 https://blog.csdn.net/qq_33935254/article/details/55505472

以上是关于详谈树结构(传统树、字典树、hash 树、Merkle Patricia Tree)的主要内容,如果未能解决你的问题,请参考以下文章

字符串hash与字典树

详谈数据库索引

数据结构--前缀树(字典树)

数据结构~trie树(字典树)

字典树(trie树)学习总结(例题讲解:POJ2001,HDU1251,HDU4825)

11个开源merkle树实现