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; //孩子向量(总比关键码多一个) 0010 // 构造函数 0011 BTNode() { parent = NULL; child.insert( NULL ); } //无关键码节点 0012 BTNode( T e, BTNodePosi<T> lc = NULL, BTNodePosi<T> rc = NULL ) { 0013 parent = NULL; key.insert( e ); //作为根节点只有一个关键码,以及 0014 child.insert( lc ); if ( lc ) lc->parent = this; //左孩子 0015 child.insert( rc ); if ( rc ) rc->parent = this; //右孩子 0016 } 0017 };