二叉查找树/平衡二叉树/红黑树/B B+树

注:本文参考王道考研及大雪菜
平均查找长度ASL(查找成功/查找失败)


0. 二叉排序(查找)树 BST

左子树<根<右子树,不允许出现一样的值,中序遍历得到递增序列
便于搜索、插入,删除麻烦一点
在这里插入图片描述

  1. 插入:新插入的节点一定是叶子节点

  2. 删除:先找位置
    2.1 待删除节点是叶子节点直接删
    2.2 待删除节点只有左子树或只有右子树,直接让这个独子上来代替爹:
    在这里插入图片描述
    2.3 待删除节点左右子树都不为空,挑选何时的候选人上来
    在这里插入图片描述
    选右子树的最左节点60或者左子树的最右节点30来代替50.
    选60:用60的值替代50,然后删除60节点原来在的位置,必跳转到2.1/2.2(不会有左子树)
    选30:用30的值替代50,然后删除30节点原来在的位置,必跳转到2.1/2.2(不会有右子树)

1. 平衡二叉树 AVL

对二叉排序树进行改进:左右子树高度只差不超过1。以查为主
调整(插入)最小不平衡子树

  1. LL:
    在这里插入图片描述
  2. RR
    在这里插入图片描述
  3. LR
    在这里插入图片描述
  4. RL
    在这里插入图片描述

在AVL上删除某节点:
(1)先按照二叉排序树的方法按照三种情况删除某节点
(2)从删除节点一路向上看有没有不平衡节点,找到最小不平衡子树、最小不平衡子树根节点的最高儿子和最高孙子
(3)针对这三个彩色节点调整平衡
在这里插入图片描述王道 平衡二叉树的删除

2. 红黑树 RBT

也是一种二叉排序树,左<根<右
对BST的改进(红黑树定义):
在这里插入图片描述
在这里插入图片描述

性质:

在这里插入图片描述

频繁插入删除,实际应用中多

2.1 红黑树的插入

在这里插入图片描述
王道 红黑树的插入

总结:

在这里插入图片描述

2.2 红黑树的删除

这部分王道没讲,所以先放个y神在这里

3. B/B+树

3.1 B树(多路 平衡 查找树)

多叉查找树+每个节点的子树高度相同(绝对平衡)

总结:一共两个限制

(1)每个节点子树高度相同
(2)对于m阶B树(树中节点的最多叉数为m)有:

在这里插入图片描述

B树对节点关键字个数有要求(强制要求):

在这里插入图片描述
这么做是为了使B树不要太空,层数尽可能小,便于搜索

在这里插入图片描述

(1)B树的插入

先查找位置,只能在终端节点插入
如果插入后某个节点爆了,要将该节点分裂,新的中心节点为中间值,提到父节点当中,剩余数值分两份(分裂)
具体提到父节点的哪里:指向当前节点的指针的右侧

注:可能回出现上面没有父节点的情况,需要new一个新父节点

(2)B树的删除

B树的删除

删除时的几种情况:
A。直接删:查找出待删除节点的直接前驱/直接后继,拿上来代替此待删除节点
B。删完之后当前节点中隔板数过少:借右面兄弟节点以及父节点隔板,重新分配(我,父,兄)三个节点的隔板

3.2 B+树

B树是隔板,查找时可能停留在某一层就找到了
B+树是分块查找,只有走到叶子才算真正找到了

下图中,15表示:其子树中,最大值为15
[0,15] [16,56] [57,无穷]
在这里插入图片描述
只有访问到叶子节点才能获取到真正的信息,非叶节点仅起索引作用

在这里插入图片描述

m阶B树(节点伸出去的最大叉数为m),每个节点至少[m/2]个叉【向上取整】
m阶B+树(节点伸出去的最大叉数为m),每个节点至少[m/2]个叉【向上取整】

对比:
在这里插入图片描述

场景题:3层B+树最多能存多少数据

https://blog.csdn.net/csdnlijingran/article/details/102309593

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值