二叉排序树、AVL树、红黑树、B树、B+树、Hash树、

二叉排序树

1.基本应用
二叉排序树也称为也叫二叉查找树,二叉搜索树, BST。
满足二叉查找树的一般性质,是指一棵空树具有如下性质:

对于二叉树中的任何一个非叶子节点,要求左子节点比当前节点值小,右子节点比当前节点值大。
任意节点的左右子树也分别是二叉查找树.
没有键值相等的节点.
中序遍历二叉排序树得到递增有序序列

2. 局限性及应用
一个二叉排序树是由n个节点随机构成,所以,对于某些情况,二叉排序树会退化成一个有n个节点的线性链.如下图:
在这里插入图片描述
b图为一个普通的二叉排序树,大家看a图,如果我们的根节点选择是最小或者最大的数,那么二叉查找树就完全退化成了线性结构。
最好情况下的平均查找长度 O(log2(n))
最坏情况下的平均查找长度 O(n)

基于二叉排序树改进,又出现了AVL树,红黑树,它们两个都是基于二叉查找树,只是在二叉查找树的基础上又对其做了限制.

AVL树

1. 基本概念
相比于”二叉查找树”,它的特点是:AVL树中任何节点的两个子树的高度最大差别为1。
和红黑树相比,它是严格的平衡二叉树,平衡条件必须满足(所有节点的左右子树高度差不超过1)。
AVL树的查找、插入和删除在平均和最坏情况下都是O(logn)。

2.AVL树的旋转
在AVL树中进行插入或删除节点后,可能导致AVL树失去平衡。这种失去平衡的可以概括为4种姿态:LL(左左),LR(左右),RR(右右)和RL(右左)。下面给出它们的示意图:
在这里插入图片描述
LL:左子树的左子树导致的失衡,其余依次类推。LL的旋转:
在这里插入图片描述
RR的旋转
在这里插入图片描述

LR的旋转
这里写图片描述
RL的旋转
在这里插入图片描述
3.基本应用
总结:发生问题的那个节点要成为根节点才能解决问题。不管我们是执行插入还是删除操作,只要不满足上面的条件,就要通过旋转来保持平衡,而旋转是非常耗时的,由此我们可以知道AVL树适合用于插入删除次数比较少,但查找多的情况

AVL是一种高度平衡的二叉树,所以通常的结果是,维护这种高度平衡所付出的代价比从中获得的效率收益还大,故而实际的应用不多,更多的地方是用追求局部而不是非常严格整体平衡的红黑树。当然,如果场景中对插入删除不频繁,只是对查找特别有要求,AVL还是优于红黑的。

应用相对其他数据结构比较少。windows对进程地址空间的管理用到了AVL树。

平衡二叉排序树的深度 log(n+ 1) (向上取整) 或 log(n)(向下取整) +1.

红黑树

1.基本概念
一种二叉查找树,但在每个节点增加一个存储位表示节点的颜色,可以是red或black. 通过对任何一条从根到叶子的路径上各个节点着色的方式的限制,红黑树确保没有一条路径会比其它路径长出两倍.它是一种弱平衡二叉树(由于是若平衡,可以推出,相同的节点情况下,AVL树的高度低于红黑树)

红黑树只追求近似平衡,所以在插入与删除节点时,翻转次数远远少于平衡树,因此在需要较多插入删除操作的场景中,使用红黑树更好。
同样也因为近似平衡,所以在查询时,红黑树查询的深度可能会大于平衡二叉树,所以在需要较多查询的场景中,使用平衡二叉树更好。

红黑树近似平衡:深度最大的节点的深度<= 2 * 深度最小的节点的深度。

为什么要有颜色,因为要满足近似平衡。

2.基本性质
再来看五条性质:

性质1 . 节点是红色或黑色。
性质2 . 根节点是黑色。
性质3 . 每个叶节点(叶节点即树尾端NUL指针或NULL节点)是黑色的。
性质4 . 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)

性质5 . 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。

因为性质5,所以延伸除了近似平衡状态,试想根节点到每个叶子节点的黑色节点个数相同,而每两个红色节点之间不能直接相连,根节点又必须为黑色,红节点数小于黑节点数,所以推导出:黑色节点个数<=每条路径的总节点个数<=2倍的黑色节点数,所以最大深度与最小深度的最多相差一倍。

因为性质5,默认新插入的节点都为红色,就算有颜色冲突,也可以通过变色和旋转来修改树。
在这里插入图片描述
每条路径都包含相同的黑节点.

注意:红黑树的查找、删除、添加操作都为log(n)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值