数据结构之B树/B+树

本文详细介绍了B树和B+树的数据结构特性,包括B树的定义、存储结构、查找、插入和删除操作,以及B+树的定义和存在原因。B树适用于快速查找,但不便于范围查找,而B+树因其叶子节点间的链表连接,支持高效范围查找,广泛应用于数据库和文件系统。
摘要由CSDN通过智能技术生成

一、B树

1.B树的定义

B树,又称多路平衡查找树,B树中所有节点的孩子个数的最大值称为B树的阶,通常用m表示。一颗m阶B树或为空树,或为满足如下特性的m叉树:

(1)树中每个节点至多有m棵子树,即至多含有m-1个关键字。

(2)若根节点不是终端结点,则至少有两棵子树。

(3)除根节点外的所有非叶节点至少有⌈m/2⌉棵子树,即至少含有⌈m/2⌉-1个关键字。(⌈⌉表示向上取整,例如⌈1.001⌉ = 2)

(4)所有的叶结点都出现在同一层次上,并且不带信息,即指向叶子结点的指针为空。

(5)关键字的值:子树0<关键字1<子树1<关键字2<子树2<...(以此类推,类比二叉查找树 左<中<右)

很多人看到这些定义非常懵逼,包括我刚开始看见这么多定义的第一反应是,为什么这样定义,为什么要限制子树的个数和关键字的个数呢?这些特性呢,实际上是B树为了保证查找的效率而采取的一种策略。

二叉查找树相信大家都比较好理解,当我们在二叉查找树中查找某一个数时,我们首先会和当前节点比较,如果该数比当前节点小,则去它的左子树中继续去找,如果比当前节点大,则去它的右子树中去找,直到找到或者查找失败,查找失败所在的叶子节点就是这个数所在的被该二叉查找树的节点所划分出来的范围。

比如说我找20,最后会指向19这个节点的右子树,这个右子树所代表的范围就是(19,29)。

举个例子来说,数据库大家肯定都不陌生,比如现在有一张表,其中有100万条记录,现在要查找查找其中的某条数据,如何快速地从100万条记录中找到需要的那条记录呢?大家的第一反应肯定是二叉查找树,下面先谈谈为什么二叉树不行。

如果使用二叉查找树,那么这个二叉查找树的高度为

                                        

 也就是说,要找到我们需要的那条数据,最差的情况下可能要进行20次比较,并且在数据库中,我们的数据量可能更加庞大,并且一般来说,表的索引本身也很大,不可能全部存储在内存中,一般要存储在磁盘上,用的时候再读入到内存,比较一次大小&#x

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值