标签:
总结自《算法导论》
一、B树是针对磁盘存储而设计的一种数据结构,在B树种一个node的大小一般就是一个磁盘页的大小,所以非常便于IO操作。
针对某个特定的B树都会定义一个t值,表示的意思是:除了根节点之外的内部节点最多有2*t个孩子,最少有t个孩子,相应的指针的数量为:2*t-1和t-1
任意叶子节点的高度是一样的
二、操作
1、查找
2、插入
一定会插入到叶子上。
从根节点依次往下递归,如果遇到一个满的节点,就将其分裂,从而保证在插入位置的node的父节点都不是慢的,便于后面的调整。
3、删除
3.1和插入类似也是从上往下的递归过程。在没有查到目标节点之前,如果当前node有t-1节点
3.1.1 如果node的某个兄弟节点有至少t个孩子,则进行平移一下
3.1.2 否则node和任意一个兄弟合并
3.2在到达关键字k
3.2.1叶子:直接删除
3.2.2 内部
若被删除的节点的某个孩子系欸但有至少t个孩子,则从那边借一个,取代被删除的节点
否则两个孩子合并,算法结束。
[2] http://www.cnblogs.com/oldhorse/archive/2009/11/16/1604009.html
标签:
原文地址:http://www.cnblogs.com/deepblueme/p/4926097.html