25考研数据结构复习·7.4B树和B+树7.5散列(Hash)表

目录

B树和B+树

B树

m阶B树的核心特性

B树的插入

B树的删除

非终端结点关键字

终端结点关键字

低于下限

B+树

散列(Hash)表

基本概念

散列函数的构造

👩‍💻 除留余数法

直接定址法

数字分析法

平方取中法

处理冲突的方法——拉链法

插入操作

查找操作

删除操作

处理冲突的方法——开放定址法

基本原理

元素的操作

插入

查找

👩‍💻 删除

四种常用的“探测序列”

四种增量序列的“覆盖率


B树和B+树

B树

含n个关键字的m叉B树log_{m}(n+1)\leq h\leq log_{\left \lceil m/2 \right \rceil}\frac{n+1}{2}+1

m阶B树的核心特性

  1. 👩‍💻 (尽可能“满”)根节点的子树∈[2,m],关键字数∈[1,m-1]。其他结点的子树数∈[⌈m/2⌉,m];关键字∈[⌈m/2⌉-1,m-1]
  2. 👩‍💻(尽可能“平衡”)对任一结点,其所有子树高度都相同
  3. 关键字的值:子树0<关键字1<子树1<关键字2<子树2<……(类比二叉查找树 左<中<右)

B树的插入

  1. 通过“查找”确定插入位置(一定是在终端结点)
  2. 若插入后结点关键字个数未超过上限,则无需做其他处理
  3. 若插入后关键字个数超过上限,则需要将当前结点的中间元素放到父节点中,当前节点分裂为两个部分:该操作会导致父节点关键字个数+!,若父节点关键字个数也超过了上限,则需要再向上分裂;根节点的分裂会导致B树高度+1

B树的删除

非终端结点关键字
  1. 用其直接前驱或直接后继替代其位置,转化为对”终端结点“的删除
  2. 直接前驱:当前关键字左边指针所指子树中”最右下“的元素
  3. 直接后继:当前关键字右边指针所指子树中”最坐下“的元素

终端结点关键字

删除后结点关键字个数未低于下限,无需任何处理

低于下限
  1. 右兄弟够借,则用当前结点的后继、后继的后继依次顶替空缺
  2. 左兄弟够借,则用当前结点的前驱,前驱的前驱依次顶替空缺
  3. 左(右)兄弟不够借,则需要与父节点内的关键字、左(右)兄弟进行合并。合并后导致父节点关键字数量-1,可能需要继续合并。

B+树

m阶B树 m阶B+树
类比 二叉查找树的进化 → m叉查找树 分块查找的进化 → 多级分块查找
关键字与分叉 n个关键字对应n+1个分叉(子树) n个关键字对应n个分叉
结点包含的信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Annabelle.02

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值