一、B-树介绍
B-树是用于存储数据的一种结构,它的目的:在对数据进行存储的同时方便后续的检索等操作。B-树在查找、访问、插入、删除操作上时间复杂度为O(log2~n),对大块数据读写的操作也有不错的性能。
二、B-树定义
基本名词解释:
(1)树的节点类型:非叶子节点(包括根节点),叶子节点;
(2)关键字:存储在每一个节点的元素。
(3)孩子:每个节点拥有的孩子指针。
m阶B-树的定义:
(1)每个节点可存储的关键字数量为[0,m-1];
(2)每个节点可拥有的孩子数量为[0,m]。
(3)假设孩子数量为A,关键字数量为B,当节点为非叶子节点时,两者之间的关系为B=A-1;当节点为叶子节点时,A=0,B∈[0,m]。
三、基本操作
3.1创建3阶B-树
基本思路:每次都是往叶子节点插入新的数据,若达到节点存储的个数上限,需要进贡与分裂。在这个过程中,树的高度会增大。
序列:【24
,45,53,46,9,8
,18,
92,78,102】
插入24
插入45,53,由于3阶B-树中节点的关键字数量最大为3-1=2,因此节点需要向上进贡,并自己分裂。此时需要把中间的数字45进贡上去,同时自己分裂成两个节点。注意:若关键字数量为偶数,则把在中间靠后的那个数进贡上去。比如数量为4,把第3个关键字进贡上去。
插入46,9,8。此时关键字的数量超标,中间的9进贡给父亲
插入18,92。进贡53给父亲后,父亲的关键字数量也超标,继续进贡、分裂,此时树高增加。
插入78,102。进贡92给父亲,自己分裂。
3.2 增删改查
后续更新。可参考:http://hao3100590.iteye.com/blog/1576846