数据结构树,为什么是B+树

1、二叉查找树 Binary Search Tree

特点:右子节点的数据要比根节点的大,左子节点的数据比根节点小,特殊情况下会变成一个链表。

二叉搜索树其期望高度(即为一棵平衡树时)为log2n,其各操作的时间复杂度(O(log2n))同时也由此而决定。但是,在某些极端的情况下(如在插入的序列是有序的时),二叉搜索树将退化成近似链或链,此时,其操作的时间复杂度将退化成线性的,即O(n)。

2、平衡二叉树,Balanced binary search Tree

平衡二叉搜索树(Self-balancing binary search tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。平衡二叉树的常用实现方法有红黑树AVL替罪羊树Treap伸展树等。 最小二叉平衡树的节点总数的公式如下 F(n)=F(n-1)+F(n-2)+1 这个类似于一个递归的数列,可以参考Fibonacci(斐波那契)数列,1是根节点,F(n-1)是左子树的节点数量,F(n-2)是右子树的节点数量。

平衡二叉搜索树(Balanced Binary Tree)具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。在平衡二叉搜索树中,我们可以看到,其高度一般都良好地维持在O(log(n)),大大降低了操作的时间复杂度。

 

3、多路平衡查找树(B-Tree)

   m阶的B树满足以下性质:

    (1)每个节点最多拥有m个子树

    (2)根节点最少有2个子树

    (3)分支节点最少拥有m/2棵子

    (4)所有叶节点都在同一层,每个节点最多有m-1个key,并且以升序排列

4、加强版的多路查找树(B+ Tree)

(1)B+跟B树不同B+树的非叶子节点不保存关键字记录的指针,这样使得B+树每个节点所能保存的关键字大大增加;

(2)B+树叶子节点保存了父节点的所有关键字和关键字记录的指针,每个叶子节点的关键字从小到大链接;

(3)B+树的根节点关键字数量和其子节点个数相等;

(4)B+的非叶子节点只进行数据索引,不会存实际的关键字记录的指针,所有数据地址必须要到叶子节点才能获取到,所以每次数据查询的次数都一样;

mysql中使用B+树来做索引,更加符合业务场景,查询时经常需要排序或查询多条数据,这样B+树索引是有序的,并且有链表相连,是的他的查询效率就快了很多;而且数据库的索引一般存储在磁盘上,数据量大的时候无法一次性装入内存,B+树的设计可以进行分批加载,从而避免内存溢出,减少内存使用,同时可以降低树的高度,提高查询效率。

 

B+树是B-树的变种(PLUS版)多路绝对平衡查找树,他拥有B-树的优势

B+树扫库、表能力更强

B+树的磁盘读写能力更强

B+树的排序能力更强

B+树的查询效率更加稳定(仁者见仁、智者见智)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值