首先B/B+树一般是用于索引结构中,用来在大量数据中快速定位查找到想要的数据。但是这种快速查找的数据结构很多,比如查找树,红黑树,那B-/B+树又有什么不同那,以致它被用在大量的数据中快速定位,而不是使用二叉查找树。对于红黑树可以查看文章底层的链接。
下面会进行解释,在解释之前首先向对B-/B+树是什么东西做一下简单介绍。
B+是B-(下午我们直接称B树,正确读法应该就是B树)的一种变种,主要的变化就是内部节点存储的数据的不同。
B树是一个这样的树:
3、除根结点以外的所有结点(不包括叶子结点)的度数正好是关键字总数加1,故 内部子树个数 k 满足:┌m/2┐ <= j <= m ;
可以看出,它每个非根、非叶节点中会有很多个key,而每个key直接又有一定的规律从大到小排列。其存储的数据(n,P0,K1,P1,K2,P2,…,Kn,Pn),其中n关键字个数,Ki为关键字,K1<K2<…<Kn,Pi 是指向包括Ki到Ki+1之间的关键字的子树的指针。也就说pi指针指向的一个节点中的所有数据都会小于Ki,很明显也会小于ki+1。这样在查找一个key会非常快。首先通过二分查找判断是否在当前节点中或者在本节点下面的某个子节点,然后递归查询,可以看出最大的查找深度为树的深度:
2.所有的叶子结点中包含了全部关键字的信息,及指向含这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。
3.所有的非终端结点可以看成是索引部分,结点中仅含其每个子树(根结点)中的最大(或最小)关键字。有几颗子树就有几个关键字,
而该关键字是其对应的子树所含有的关键字中的最大。
更多的
但是他每次能获取到的节点更多,一定程度上查找效率要高于B树,所以这就解决了为何不是使用二叉查找树。
再一次吐槽编辑器如此难用
红黑树详细介绍:http://blog.csdn.net/zwan0518/article/details/12219055
原文链接:/datastructure/383204.html