6.5查找之B树、B+树

4.B树、B+树
(B树需知概念和基本操作建立、插入、删除;B+只需了解概念;)

1.B树的基本操作

B树,多路平衡查找树

m阶B树,指所有结点至多有m棵子树,即每个结点最多有三个分支(至多还有m-1个结点,例:2个关键字有三个缝隙则有三个分支);

m阶B树特性:​

1)每个结点至多有m棵子树,每个结点内至多有m-1个关键字;

2)若子树根结点不是终端结点至少含有两颗子树(即根结点至少有一个关键字 ⭐️)

3)除根节点外的非叶子结点至少向上取整m/2 棵子树(即至少有有 m/2向上取整-1个关键字⭐️);

4)非叶子结点结构,数组,n(关键字个数),P_0,K1,P_1,K2,_P2…;例:1,P_0,K1,P2;表示(1个关键字,关键字左右范围左为小,右为大,左指针指向小的子树,右指针指向大的子树;

5)所有叶子结点用内容为空的结点代替,且出现在同一层;那么该平衡查找树的平衡因子为0

例:高度为5的3阶B树至少结点,和至多结点?

至少概念,根结点至少2棵子树,其他结点 向上取整m/2=2,造成至少结点树为1+2+2*2+…+2^(h-1) =2^h -1

至多结点,每个结点至多m棵子树,1+m+m2+…+m(h-1)=m^h -1;

B树的高度(计算):

结点个数应满足n<=(1+m+m2+…+m(h-1))=m^h-1(最多个数,满全m阶树),

已知m阶B树特性的非叶结点至少有 向上取整m/2棵子树

B树的至少结点个数为n=(累和等比数列到h-1,等比为向上取整m/2)=(向上取整m/2)^h -1;

一颗3阶的B树中有2047个关键字,则树的最大高度和最小高度?

最大高度 log_([上3/2]-1){2047+1/2)+1;最小高度[上log_3{2047+1}]

B树的查找:

思想:根据关键字大小比较,找到适应查找关键字范围的指针指向的子树,不断重复直到找到,若NULL则失败;

在结点内找关键字可折半查找,因为结点中的关键字为有序排列的;

B树的插入:

原则:插入不能破环B树的特性,若破坏则策略部分重组;

思想:

1)定位 ,利用B树查找,找出关键字插入位置;

2)插入;插入结点后溢出,则将小结点向根传递重组

B树的删除:

1)直接删除,不改变B树特性;

2)删除后结点关键字空,向兄弟结点借关键字;

兄弟结点够借,那么兄弟借之,且满足B树特性大小排列;

兄弟结点不够借,那么减少根节点关键字个数并合并兄弟结点

B+树:

B+树是应数据库所需数据结构而出现的一种B树的变形树;

一棵m阶B+数应满足以下条件:

1)每个结点最多有m棵子树;

2)非叶结点至少有两颗子树,其他分支结点至少有 向上取整m/2 棵子树,

**3)结点的子树个数与关键字个数相等;**与B树不同

4)叶子结点包括关键字和指向相应记录的指针,叶子结点的关键字按大小顺序连接起来;

5)除叶子结点外,其他非根结点都可看成分支结点,其中关键字都为子结点最大关键字;

B+树的查找:

既可以和B数一样的从根节点的多路查找,

另一种是叶子结点的关键字序列的顺序查找;

B树与B+树的异同:

1)B树中结点若有n个结点则有n+1棵子树(对应n+1个分叉),B+树种结点若有n个关键字则有n棵子树(对应n个分叉)

2)非根内部结点(除叶),结点至少含有的分叉树都为 向上取整m/2至多含有m个分叉 ,但两则因关键字与分叉对应不同,对应至少含有关键字叶不同,

B+与B树同处,B+树非叶根结点至少2棵子树,B树非终端(非叶)根结点至少有2棵子树;

3)B+树中,叶子结点包含信息,所有非叶子结点仅起索引作用,且结点存储的关键字风别为对应子树的最大关键字;

4)B+树中,叶子结点包含所有关键字,且所有关键字别连接起;而B树种,叶子结点包含的关键字和其他结点包含的关键字时不重复的;

注:B树B+树都可用于文件索引结构,而B+树还应用于数据库中索引;

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值