B树,B+树,B*树 算法

总结

B树:

是为了磁盘或其它存储设备而设计的一种多叉平衡查找树

B和B+树的区别:

B树在提高了磁盘IO性能的同时并没有解决元素遍历的效率低下的问题。正是为了解决这个问题,B+树应运而生。B+树只要遍历叶子节点就可以实现整棵树的遍历。而且在数据库中基于范围的查询是非常频繁的,而B树不支持这样的操作(或者说效率太低)。
B+树的非叶子结点只包含导航信息,不包含实际的值,所有的叶子结点和相连的节点使用链表相连,便于区间查找和遍历。

B+与B*树的区别:

B*树中非根和非叶子结点再增加指向兄弟的指针

B,B+,B*树博客:(http://blog.csdn.net/v_july_v/article/details/6530142
B,B+树:(http://www.cnblogs.com/maybe2030/p/4715035.html#_label4

前言

咱们有面对这样一个实际问题:就是大规模数据存储中,实现索引查询这样一个实际背景下,树节点存储的元素数量是有限的(如果元素数量非常多的话,查找就退化成节点内部的线性查找了),这样导致二叉查找树结构由于树的深度过大而造成磁盘I/O读写过于频繁,进而导致查询效率低下(为什么会出现这种情况,待会在外部存储器-磁盘中有所解释),那么如何减少树的深度(当然是不能减少查询的数据量),一个基本的想法就是:采用多叉树结构(由于树节点元素数量是有限的,自然该节点的子树数量也就是有限的)。降低树的深度自然会提高查找效率。

B树

介绍

B树是为了磁盘或其它存储设备而设计的一种多叉平衡查找树
B树与红黑树最大的不同在于,B树的结点可以有许多子女,从几个到几千个。因为与红黑树一样,一棵含n个结点的B树的高度也为O(lgn),但可能比一棵红黑树的高度小许多,应为它的分支因子比较大。

2B树(4B树类似)

《B树,B+树,B*树 算法》

插入动画

《B树,B+树,B*树 算法》

B+树

介绍

(1)非叶结点仅具有索引作用,跟记录有关的信息均存放在叶结点中。
(2)所有的叶子结点中包含了全部关键字的信息。
(3)树的所有叶结点构成一个有序链表,可以按照关键码排序的次序遍历全部记录。

《B树,B+树,B*树 算法》

插入动画

《B树,B+树,B*树 算法》

B*树

介绍

在B+树的基础上(所有的叶子结点中包含了全部关键字的信息,及指向含有这些关键字记录的指针),B*树中非根和非叶子结点再增加指向兄弟的指针;

《B树,B+树,B*树 算法》

    原文作者:B树
    原文地址: https://blog.csdn.net/cy_cai/article/details/53282821
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞