B树与B+树个人笔记

B树与B+树

前言

先引入一个动态查找树:二叉查找树、平衡二叉查找树、红黑树、B树、B+树、B*树。
这六者都是为实现高效率的磁盘存取而设计的。
前三者是典型的二叉查找树结构,时间复杂度为n(log2N),与树的深度(高度)相关,那么降低树的深度自然就可以提高查找效率。
后三者是要讲的重点。
树的深度过大会造成磁盘I/O操作过于频繁,进而导致查询效率低下。
那么如何减少树的深度?如果在树节点存储更多的元素,但树节点存储的元素数量是有限的(如果元素数量非常多的话,查找就退化成节点内部的线性查找了),那么一个基本的想法就是采用多叉树结构。

B树

B树,多路平衡查找树,在平衡二叉树的基础上衍生出来的,与红黑树相似,但在降低磁盘I/O操作方面要更好一些。

特性
一棵M阶的树
1、 树中每个结点最多含有M个孩子(M >= 2)
2、 除根结点和叶子结点外,其它每个结点至少有ceil( M/2 )个孩子(ceil(x)向上取整)
3、 若根结点不是叶子结点,则至少有2个孩子。(特殊情况为没有孩子的根结点,整棵树只有一个根节点)
4、 所有叶子结点都出现在同一层,叶子结点不包含任务关键字信息
5、 每个非终端结点中包含n个关键字信息(k0 , p0 , k1 , p1 , k2 , p2 , ….. , kn , pn),其中:
1、 Ki为关键字信息,且关键字按顺序升序排序K(i-1)

B+树

B+是在B树的基础上的一种变形树。主要特点同B树一样,主要差异在:
1、 关键字信息全部保存在叶子结点,非叶子结点只保存关键字的索引信息。
2、 树的所有叶子结点构成一个有序链表,可以按照关键字排序的次序遍历全部信息。
3、 一个M阶的B+有M个关键字(B树是M-1),M个孩子。(ki<=ci

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章