Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
MATERIA:
Algoritmos y estructuras de datos
• Al maximizar el número de
nodos hijo de cada nodo
interno, la altura del árbol
decrece, las operaciones para
balancearlo se reducen, y
aumenta la eficiencia.
Arboles B+
• En ciencias de la computación,
un árbol B+ es un tipo
de estructura de datos de árbol,
representa una colección de datos
ordenados de manera que se
permite una inserción y borrado
eficientes de elementos. Es
un índice, multinivel, dinámico,
con un límite máximo y mínimo en
el número de claves por nodo. Un
árbol B+ es una variación de
un árbol B.
• Los árboles B+ se han convertido en la técnica mas
utilizada para la organización de archivos indizados. La
principal característica de estos arboles es que todas las
claves se encuentran en las hojas y por lo tanto cualquier
camino desde la raíz hasta alguna de las claves tienen la
misma longitud.
ARBOL B+ DE ORDEN 2
Inserción en árboles b+
Diferencias entre arboles b y b+
• Su diferencia con el proceso de inserción en árboles B consiste en
que cuando se inserta una nueva clave en una página llena, ésta se
divide también en otras dos y lo que subirá a la página antecesora
será una copia.
• La diferencia consiste en que las llaves se almacenan en los nodos
del último nivel del árbol y esos nodos se enlazan unos con otros
formando una lista ligada que puede ser ligada en forma sencilla o
doblemente ligada.
• Las llaves se repiten en los nodos intermedios y en el nodo raíz
para facilitar la búsqueda.
• Puede haber llaves en los nodos intermedios que no existan en los
nodos hoja porque alguna vez se insertaron y luego se borraron
pero se conservan para propósitos de localizar algunas llaves.
void Lectura2(nodo n,tArbol T) {
tEtiqueta etHijo,etHermano; tArbol Hijo,Hermano;
fprintf(stdout,"Introduce hijo_izqda de: "); Escribir(etiquetaAr(n,T));
Leer(&etHijo); if(comparar(etHijo,FINAL))
{ Hijo=creaRaiz(etHijo); insertar_hijo_izqda(n,Hijo,T);
Lectura2(hizqdaAr(n,T),T);
} fprintf(stdout,"Introduce her_drcha de: "); Escribir(etiquetaAr(n,T));
Leer(&etHermano); if(comparar(etHermano,FINAL))
{ Hermano=creaRaiz(etHermano);
insertar_hermano_drcha(n,Hermano,T); Lectura2(herdrchaAr(n,T),T); }
} tArbol Lectura()
{ tArbol T; tEtiqueta et; fprintf(stdout,"En caso de que no exista el
hijo_izqdo o el" "hermano_derecho introducir el valor: "); Escribir(FINAL);
/*FINAL actua de centinela*/ fprintf(stdout,"\nIntroduce la raiz del arbol:
"); Leer(&et); T=creaRaiz(et); Lectura2(raizAr(T),T); }
• Operaciones básicas arboles
Búsqueda: la búsqueda de una llave Y se realiza de manera análoga a
la búsqueda en un árbol binario de búsqueda. Se comienza buscando
por el nodo raíz y se compara la llave y con las llaves ki que se
encuentran en ese nodo. Si Y es igual a algún ki termina la búsqueda
satisfactoriamente.
Inserción: para realizar la inserción lo primero que debe hacerse es
un proceso de proceso de búsqueda da por resultado que el elemento
ya existe, no se realizara ninguna operación pues el árbol b no
permite elementos repetidos.
Eliminación: La elimanación siempre debe realizarse en una hoja si
después de realizarla búsqueda el nodo a borrar no estuviese en una
hoja de la misma manera que se procede en una árbol binario de
búsqueda el nodo a borrar se sustituiría por su antecesor o sucesor
que si se debe estar en una hoja.
Búsqueda
• La operación de búsqueda en árboles-B+ es similar a la
operación de búsqueda en árboles-B. El proceso es simple, sin
embargo puede suceder que al buscar una determinada clave la
misma se encuentre en un nodo raíz o interior, en dicho caso no
debe detenerse el proceso, sino que debe continuarse la
búsqueda con el nodo apuntado por la rama derecha de dicha
clave.