Estructura de Datos II Pgina: M.Sc. Karim Guevara Puente de la Vega 2 template<class E> class BTree{ private: BNode<E> *root; int orden; bool FindNode(BNode<E> *,E, int *);
template <class E> void BTree<E>::insert(E cl){ int up; E median; BNode<E> *pnew,*nd; push(root,cl,&up,&median,&nd);
Estructura de Datos II Pgina: M.Sc. Karim Guevara Puente de la Vega 3 if(up){ pnew=new BNode<E>(orden); pnew->count=1; pnew->keys[0]=median; pnew->childs[0]=root; pnew->childs[1]=nd; root=pnew; } }
template <class E> void BTree<E>::dividedNode(BNode<E> *current,E cl,BNode<E> *rd, int k,E *median,BNode<E> **nuevo){ int i,posMdna; posMdna=(k<=orden/2)?orden/2:orden/2+1;
(*nuevo)=new BNode<E>(orden);
for(i=posMdna;i<orden-1;i++){ (*nuevo)->keys[i-posMdna]=current->keys[i]; (*nuevo)->childs[i-posMdna+1]=current->childs[i+1]; } Estructura de Datos II Pgina: M.Sc. Karim Guevara Puente de la Vega 4 (*nuevo)->count=(orden-1)-posMdna; current->count=posMdna;