B树和B+树


B树
想象一下,B树就像一个图书馆里的书架,书架的每一层都可以放很多书(但有上限),每本书都有个书名(关键字),书架的每一层都按照书名的字母顺序排列。B树的规则是这样的:
书架的每一层(结点)最多可以放m-1本书(关键字)。
书架最下面的那一层(叶结点)所有的书都是平铺开的,没有放在子书架上。
书架的每一层至少得有两本书,除非你的书架是空的。
书架上的书必须按顺序放,这样找书的时候才能快速找到。
当你想在书架上加一本书时,你得先找到放这本书的正确层和位置。如果那一层放满了,就得把这层的书分到另一个新层去。如果你想从书架上拿走一本书,如果拿掉后那层的书还是够多,就直接拿走;如果不够了,可能就得从旁边的层借一本书过来,或者和旁边的层合并。
B+树
B+树就像是B树的升级版,它也有书架和书,但是有一些不同:
B+树的书架最下面那一层(叶结点)不仅按顺序放了所有的书,而且这些书还互相连着,就像一串项链一样。
书架的每一层(除了最下面的叶结点)只放书的目录(关键字),并不放书的内容。
这样,当你想找一本书的时候,你可以先在目录上快速定位,然后顺着项链找到具体的书。
B+树特别适合用来存储很多数据,比如在数据库里。因为当你想找到一系列的书(范围查询)时,B+树可以让你顺着项链快速找到所有相关的书。
总的来说,B树和B+树都是用来帮助我们快速找到东西的工具,它们通过保持书架的整齐和有序,让我们能够迅速地找到我们想要的书(数据)。
 

 

知识点链接
B树及其基本操作
概念:B树是一种多路平衡查找树,其特点是所有结点的孩子数最多为m,称为B树的阶。
特点:
每个结点最多有m-1个关键字。
根结点至少有两棵子树,除非是空树。
所有叶结点在同一层,且不包含数据信息。
所有结点的平衡因子为0。
推导性质:
结点的孩子数等于关键字数加1。
根结点无关键字时,B树为空。
根结点有关键字时,至少有两棵子树。
关键字在结点内递增有序,两侧有指向子树的指针。
查找:在B树上查找关键字,先在结点内查找,若未找到则按指针到子树中继续查找。
插入:确定关键字插入的最低层非叶结点,若插入后关键字数超过m-1,则需要分裂结点。
删除:
直接删除:如果删除后结点关键字数仍满足条件,则直接删除。
兄弟借位:如果删除后关键字数不足,可以从相邻兄弟结点借关键字。
兄弟不够借:如果兄弟结点关键字数也不足,则需要合并关键字。
B+树的基本概念
特性:
每个分支结点最多有m棵子树。
非叶根结点至少有两棵子树,其他分支结点至少有\lceil \frac{m}{2} \rceil棵子树。
结点的子树数与关键字数相等。
所有叶结点包含全部关键字及指向记录的指针,且叶结点之间按关键字大小顺序链接。
分支结点仅包含子结点的最大关键字和指针。
主要差异:
B+树中,每个关键字对应一棵子树,而B树中每个关键字对应两棵子树。
B+树结点的关键字数范围是[1, m](根结点)和[\lceil \frac{m}{2} \rceil, m-1](非根内部结点),B树则是[1, m-1](根结点)和[\lceil \frac{m}{2} \rceil, m-1](非根内部结点)。
B+树的叶结点包含所有关键字,非叶结点仅作为索引,而B树的叶结点关键字不重复。
B树和B+树都是用于数据库和文件系统索引的数据结构,它们通过保持树的平衡来优化查找、插入和删除操作的性能。B+树特别适合用于存储大量数据,因为它的叶结点是顺序链接的,这使得范围查询更加高效。
 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值