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