B树,B+树和红黑树

引言

树作为可以大幅度缩小查找时间复杂度的数据结构,有很多变种。我们熟悉的二叉查找树查找的时间复杂度为O(logN)。为了维持二叉树的高度,人们开发出了平衡二叉树,这样能够将搜索的时间复杂度控制在O(logN)。然而平衡二叉查找树为了维持平衡,需要不断检测自己的结构是否平衡,若非平衡结构,则需要不断维护结构达到新的平衡,动态插入和删除的代价也随之增加。另外,二叉查找树虽然在时间复杂度方面表现很出色,但是会涉及到比较高的磁盘IO成本。当大量数据存储时,如果每次磁盘IO只得到一个节点的数据,二叉查找树将会有巨量的磁盘IO次数,造成巨大的代价。为了减少磁盘IO次数,必须降低树的深度,有两个思路。
(1)二叉树变为多叉树减小树的深度。
(2)将多个数据存储于一个一个节点中

B树

B树的定义

根据《算法导论》中的定义,设 t 为B树的最小度,一颗最小度为 t 的B树满足以下条件:

  • 每个节点最少包含 t - 1 个数据,最多包含 2t - 1 个数据,根节点至少包括1个数据。
  • 每个节点中的数据都按照非降序排列。
  • 每个节点中的数据都会完成对子树的范围切割。若节点有 n 个数据,则会有 n + 1 个指针指向 n + 1 个子树。
  • 所有叶子节点的深度是一样的,为树的高度,代表着B树的平衡。

B树结构:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值