数据结构:B-树

来源:互联网 发布:19s管理淘宝 编辑:程序博客网 时间:2024/05/21 05:20

一、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
原创粉丝点击