基础理论

浅谈【树】:红黑树、AVL树、B树、B+树

2019-11-18  本文已影响0人  Alcazar

一、红黑树(漫画理解)

(PS:标题 超链接着漫画版的解读,看漫画,学数据结构,轻松get知识点~...)

1.1 二叉查找树

1.2 红黑树

一种二叉查找树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。

1. 红黑树限制规则

Red-Black Tree 「RBT」是一个自平衡(不是绝对的平衡)的二叉查找树(BST),树上的每个节点都遵循下面的规则:

2. 调整规则

先试变色再试旋转(左旋或右旋)

3. 优点

正是红黑树的这5条性质,使一棵n个结点的红黑树始终保持了logn的高度,从而也就解释了上面所说的“红黑树的查找、插入、删除的时间复杂度最坏为O(log n)”这一结论成立的原因。除了O(log n)的时间之外,红黑树的持久版本对每次插入或删除需要O(log n)的空间

4. 用途

红黑树的应用比较广泛,主要是用它来存储有序的数据,它的时间复杂度是 O(lgn),效率非常之高。

例如,Java 集合中的 TreeSet 和 TreeMap,C++ STL 中的 set、map,以及 Linux 虚拟内存的管理,都是通过红黑树去实现的。


二、树的深度优先遍历和广度优先遍历(漫画解读)

【简介】深度优先遍历简称DFS(Depth First Search),广度优先遍历简称BFS(Breadth First Search),它们是遍历图当中所有顶点的两种方式。

2.1 深度优先遍历

2.2 广度优先遍历

三、B-树B+树

【简单介绍】:动态查找树主要包括:二叉查找树,平衡二叉树,红黑树,B树,B+树,查找的时间复杂度就为O(log2N),通过对数就可以发现降低树的深度就会提高查找效率。因为内存的易失性。一般情况下,我们都会选择将 user 表中的数据和索引存储在磁盘这种外围设备中。和内存相比,从磁盘中读取数据的速度会慢上百倍千倍甚至万倍,所以,我们应当尽量减少从磁盘中读取数据的次数。在大数据存储过程,大量的数据会存储到外存磁盘,外存磁盘中读取与写入某数据的时候,首先定位到磁盘中的某一块,这就有个问题:如何才能有效的查找磁盘中的数据呢,这就需要一种高效的外存数据结构,B树就是为了提高磁盘或外部存储设备查找效率而产生的一种多路平衡查找树。

3.1 B树

【简介】:B树:(Balance Tree)即为平衡树的意思,为了存储设备或者磁盘而设计的一种多路平衡查找树,每个节点拥有更多的子节点,子节点的个数一般称为阶。

【备注一条】:在数据库索引中,没有B-树(B减树)的说法,这就是B树 !!!

用途:

主要用于 文件系统以及部分数据库索引(比如:MongoDB菲关系型数据库)

B树 特性

一棵m阶的B树,特性如下:

3.2 B+树

B+树的特点


【B树】 VS 【B+树】

B+树优于B树的几点内容:


3.3 以上几种树在检索过程中的性能对比

如果在内存中红黑树比B树效率更高,一旦涉及磁盘操作B树就更好,B+树当然比B树更优。

索引在 MySQL 数据库中分三类:


(PS:标题 题干连接着漫画版的解读,看漫画,学数据结构,轻松get知识点~)

本文转载自:【陈小陌博客】:http://www.mylwx.cn/post/186.html

上一篇下一篇

猜你喜欢

热点阅读