next up previous
Next: Eliminación Up: Implantación de un B Previous: Búsqueda

Recorrido Secuencial

Esta es la mayor ventaja que ofrece el B+ sobre el árbol B, ya que además de ser un árbol, sus hojas se pueden manejar como una lista ligada. La forma de recorrer secuencialmente los registros en el B+ es simple, primero buscamos la hoja más a la izquierda y después recorremos todos los elementos de cada hoja. Para esta tarea primero implantamos la rutina first_leaf, que recorre las ramas más a la izquierda del árbol hasta llegar a una hoja.
/* Encuentra la hoja mas a la izquierda */
/* [MAYO-97]				*/
/* AMILCAR MENESES VIVEROS		*/
node *first_leaft(node *n)
{
    if ( isleaf(n) == BTRUE ) return n; 
    else return first_leaf(n->an[0]); 
}
Una vez hallada la primera hoja se listan todos sus elementos en orden ascendente, y después saltar al siguiente nodo hoja al que hace referencia el apuntador nxt, y así sucesivamente hasta que algún nodo hoja tenga el valor de NULL en nxt (la hoja más a la derecha).
/* Lista todos los registros en forma secuencial */ 
/* [MAYO-97]					 */
/* AMILCAR MENESES VIVEROS			 */
void list_all(node *root)
{
   int  i, l, c; 
   node *h; 

   c=0; 
   h = first_leaf(root); 
   while( h != NULL ) { 
      l = h->nKeys;                     /* Numero de elementos   */
      for(i=0; i<l; i++) {
         c++;                           /* Contador de elementos */
         list_element(h,i,c);           /* Despliega el registro */
      }
      h = h->nxt;                       /* Proximo nodo hoja     */
   } 
}



Amilcar Meneses
2003-09-08