B+树算法与源码(C++语言描述) B+树可以看作是B 树的变形,对于存放在外存贮器上的字典,B+树比B 树更为常用
一个m 阶的B+树满足下列条件∶ (1) 每个结点至多有 m 棵子树
(2) 除根结点外,其它每个分支至少有 m/2棵子树
(3) 非叶结点的根结点至少有两棵子树
(4) 有 n 棵子树的结点有 n 个关键码,叶结点中至少包含 n/2个关键码
(5) 叶结点都在同一层中,其中存放数据文件中记录的关键码及指向该记录的指针,或存放数据文件分块后每块的最大关键码及指向该块的指针
叶结点按关键码值大小顺序链接
可以把每个叶结点看成是一个基本索引块(直接指向数据文件中的记录)
(6) 所有分支结点可看成是索引的索引
使结点中仅包含它的各个子结点中最大(或最小)关键码的分界值及指向子结点的指针
/* * test
cpp * * Created on: 2012-10-10 * Author: charle */ //typedef char* CHARPTR; #include #include using namespace std; #define MAX_CNT 5 #define MIN_CNT 2 typedef struct BTreeNode{ //最大 key 个数为5,最小为2 int key[5];//关键字数组 int nodetype;//节点类型:0-根,1-内部节点,2-外节点 bool isleaf;//是否为叶节点 int nsize;//关键字个数; BTreeNode* succeedingnode[6]; BTreeNode* parentnode; }_BTreeNode; _BTreeNode* Create_BTree(int key) { _BTreeNode *root; root = new _BTree