红黑树(一)引导篇——从二叉树到红黑树

本文介绍了从二叉树到红黑树的发展过程,包括平衡树的概念,如B树和AVL树,以及它们各自的特点。B+树由于其非叶子节点仅作为索引,减少了I/O操作,从而提高检索效率。最终,红黑树通过简化2-3-4树,成为一种具备平衡、排序和二叉树特性的数据结构。
摘要由CSDN通过智能技术生成

红黑树(一)引导篇——从二叉树到红黑树

这段时间有空,把之前学的红黑树整理了一下,先给大家推荐一个生成红黑树的网站,可以用于检测大家一会写的代码对不对。

https://www.cs.usfca.edu/~galles/visualization/RedBlack.html

这篇就不讲红黑树咋写,就给大家说下,红黑树是怎么来的。

一、二叉树 和 多叉树

二叉树作为一个最基本的树结构,大家一定都认识。

二叉树的节点,最多有两个子节点

那么,相对应的还有叫做多叉树。

多叉树的子节点可以是任意个

二、 多叉树 到 平衡树(BT)

平衡树的子节点树是任意的

它是指任意节点的子树的高度差小于等于1

常见的平衡树有:B树(平衡多路查找树)、AVL树(二叉平衡搜索树)

三、平衡树 到 B树、AVL树

3.1 B树

B树不是一颗树,是泛指具备B树性质的所有树
B树属于多叉树,又名平衡多路查找树

对B树子规定节点个数的不同,叫m阶B树。m阶B树中,每个结点的子节点不大于m个

常见的B树有:2-3树(3阶B树)、2-3-4树(4阶B树)

B树 和 B+树(这个跟红黑树没关系)

顺带提一下 B树 和 B+树

B树 和 B+树 的一个很大的区别就是: B+树的非叶子结点不存数据,而B树所有结点都存数据

这个特性就导致了 B+树 检索效率高于 B树

为什么呢
3.1.1 大家看上去是这样的:

B+树的数据只存在叶子结点上,B树所有结点都存数据。

进而得出结论: 同样多的数据,B+树的节点数 > B树的结点树

这是对的,然后大家就疑惑了,结点多查找效率应该慢才对,为什么B+树的查找效率反而更高,这不科学啊

3.1.2 其实是这样的

查找效率高针对的是海量数据,那么这棵树就会很大。

大到什么程度呢?你的内存放不开这棵树,必须要分多次把树读到内存里才行,比如说:数据库的数据

那么,对于把树读到内存里面,其实就是一次I/O,一次I/O的时间远远大于遍历一颗树的时间

遍历的时候,I/O越少,速度越快

反过来看 B+树 和 B树 , B+树的非叶子结点不存数据,只作索引,所以B+树的非叶子结点更小,一次I/O能加载更多的索引(非叶子结点),I/O次数少,所以速度快!!!


3.2 AVL树

AVL树是一颗二叉搜索树,同时具备平衡树的特点

增加和删除结点,可通过一次或多次树旋转重新平衡这个树。

四、B树 到 2-3-4树

刚刚我们说到

2-3-4树 是 B树 的一个的实例,也叫做 4阶B树

2-3-4树的性质比较多,下篇我们详细说

五、2-3-4树、AVL树 到 红黑树

2-3-4树的性质很多,而且实现起来很复杂,所以就有个大佬 Rudolf Bayer 就找到了一个办法:

把复杂的 2-3-4树,简化成了二叉树,这个二叉树能与2-3-4树对应起来,使其具备2-3-4树的所有性质。

可以看出,红黑树具备2-3-4树、AVL树的性质,也就是具备:平衡树排序树二叉树的性质。

End

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值