BST、B树、B+_树

    B树和B+_树被广泛应用于关系型存储引擎中。下面结合参考文章,对该内容作简要总结。

1.  BST树 & AVL树

      1.1 二叉搜索树(BST binary search tree)特性:

        1. 所有非叶子结点之多拥有两个儿子(left、right);
        2. 所有结点存储一个关键字;
        3. 非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树。
       
        BST的搜索结果,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;否则,如果查询关键字比结点关键字小,就进入左子树;如果比结点关键字大,就进入右子树;如果左子树或者右子树的指针为空,则报告找不到相应的关键字。
        如果BST的所有非叶子结点的左右子树的节点数目保持差不多平衡,那么B树的搜索性能逼近二分查找;但它相比较连续内存空间的二分查找的优点是:改变BST结构(插入与删除节点)不需要移动大段的内存数据,甚至通常是常熟的开销。
        但是BST经过多次插入与删除后,有可能导致不同的结构:
       
        右边也是一个BST,但它的搜索性能已经是线性的了;同样的关键字集合有可能导致不同的树结构索引;所以使用BST还要考虑尽可能让BST保持左图的结构,和避免右图的结构,也就是所谓的“平衡”问题。

      1.2 平衡二叉树概念:

        平衡二叉树(AVL树,发明者为Adel'son-Vel'skii 和 Landis),除了具备二叉查找树的基本特征之外,还具备一个非常重要的特点:它的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值(平衡因子)不超过1。也就是说AVL树每个节点的平衡因子只可能是-1,0,1。
        实际使用的BST都是在原BST基础上加上平衡算法,即“平衡二叉树”;如何保持BST节点分布均匀的平衡算法是平衡二叉树的关键;平衡算法是一种在BST中插入和删除结点的策略。

      1.3 平衡二叉树的平衡策略:

        如何在二叉搜索树中添加数据的同时保持平衡呢?基本思想是:当在二叉排序树中插入一个节点时,首先检查是否因插入而破坏了平衡,若破坏,则找出其中的最小不平衡二叉树,在保持二叉排序树特性的情况下,调整最小不平衡子树中节点之间的关系,以达到新的平衡。所谓最小不平衡子树指离插入节点最近且以平衡因子的绝对值大于1的节点作为根的子树。

2.  B树(B-Tree/B-树/B_树/多路搜索树)

     2.1 B树的特性:

        B树中每一个结点能包含的关键字的数目有一个上界和下界。这个下界可以用一个称作B树的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值