0001 #include "vector/vector.h" 0002 #define BTNodePosi(T) BTNode<T>* //B-树节点位置 0003 0004 template <typename T> struct BTNode { //B-树节点模板类 0005 // 成员(为简化描述起见统一开放,读者可根据需要进一步封装) 0006 BTNodePosi(T) parent; //父节点 0007 Vector<T> key; //关键码向量 0008 Vector<BTNodePosi(T)> child; //孩子向量(其长度总比key多一) 0009 // 构造函数(注意:BTNode只能作为根节点创建,而且初始时有0个关键码和1个空孩子指针) 0010 BTNode() { parent = NULL; child.insert ( 0, NULL ); } 0011 BTNode ( T e, BTNodePosi(T) lc = NULL, BTNodePosi(T) rc = NULL ) { 0012 parent = NULL; //作为根节点,而且初始时 0013 key.insert ( 0, e ); //只有一个关键码,以及 0014 child.insert ( 0, lc ); child.insert ( 1, rc ); //两个孩子 0015 if ( lc ) lc->parent = this; if ( rc ) rc->parent = this; 0016 } 0017 };