Ir al contenido principal

Árboles B

La idea de los árboles -B es que los nodos internos deben tener un número variable de nodos hijo dentro de un rango predefinido. Cuando se inserta o se elimina un dato de la estructura, la cantidad de nodos hijo varía dentro de un nodo. Para que siga manteniéndose el número de nodos dentro del rango predefinido, los nodos internos se juntan o se parten.

Reglas
* Cada nodo del árbol debe tener un mínimo de n valores en todo momento, a excepción de la raíz.
* El número máximo de valores que un nodo puede tener es 2*n
* El árbol siempre esta balanceado.
* Todos los nodos hojas deben aparecer juntas en el último nivel.

Búsqueda
* La búsqueda es similar a la de los árboles binarios, se empieza en la raíz, y se recorre el árbol hacia abajo. Si la clave buscada no esta en la raíz y se llega a una hoja la clave no existe.

Inserción
* Las inserciones se hacen en los nodos hoja.
1- Realizando una búsqueda en el árbol, se halla el nodo hoja en el cual debería ubicarse el nuevo elemento.
2- Si el nodo hoja tiene menos elementos que el máximo número de elementos legales, entonces hay lugar para uno más.
3- De otra forma, el nodo debe ser dividido en dos nodos. La división se realiza de la siguiente manera:
             A- Se escoge el valor medio entre los elementos del nodo y el nuevo elemento
             B- Los valores menores que el valor medio se colocan en el nuevo nodo izquierdo, y los valores mayores que el valor medio se colocan en el nuevo nodo derecho; el valor medio actúa como valor separador
             C- El valor separador se debe colocar en el nodo padre, lo que puede provocar  que el padre sea dividido en dos, y así sucesivamente.

Eliminación 
La eliminación de un elemento es directa si no se requiere corrección para garantizar sus propiedades.

Tipos de eliminación 

Eliminación en un nodo hoja
Se busca el valor a eliminar y si el valor se encuentra en un nodo hoja, se elimina directamente la clave.

Eliminación en un nodo interno
Si el valor se encuentra en un nodo interno, se escoge un nuevo separador (puede ser el mayor elemento del subárbol izquierdo o el menor elemento del subárbol derecho), elimínelo del nodo hoja en que se encuentra, y remplace el elemento a eliminar por el nuevo separador.


Comentarios

Entradas populares de este blog

Árbol Binario

Representación gráfica de un árbol binario  Un árbol binario es un árbol nulo o un árbol cuyos nodos tienen a lo sumo dos hijos. Los hijos de un árbol binario se pueden denotar como hijo izquierdo e hijo derecho. No pueden tener más de dos hijos (de ahí el nombre "binario"). Si algún hijo tiene como referencia a null, es decir que no almacena ningún dato, entonces este es llamado a un nodo externo. En el caso contrario el hijo es llamado un nodo interno. Usos comunes de los árboles binarios son los árboles binarios de búsquedas, los montículos binarios y Codificación de Huffman. Un árbol binario es un árbol en el que ningún nodo puede tener cero, uno o dos hijos (subárboles). Se conoce el nodo de la izquierda como hijo izquierdo y el nodo de la derecha como hijo derecho. Existen tipos de árboles binarios que suelen usarse para fines específicos, como: Árbol binario de búsqueda y Árbol de Fibonnacci. Complejidad: árboles completos Deduciremos, de manera indu...

Búsquedas en Listas: Búsqueda Secuencial y Binaria

Procedimiento de las búsquedas Con mucha frecuencia los programadores trabajan con grandes cantidades de datos almacenados en arrays y registros, y por ello será necesario determinar si un array contiene un valor que coincida con un cierto valor clave. El proceso de encontrar un elemento específico de un array se denomina "búsqueda". En esta sección se examinarán dos técnicas de búsquedas: búsqueda lineal o secuencial, la técnica más sencilla, y búsqueda binaria o dicotómica, la técnica más eficiente. Búsqueda Secuencial La búsqueda secuencial busca un elemento de una lista utilizando un valor destino llamado clave. En una búsqueda secuencial (a veces búsqueda lineal), los elementos de una lista o vector se exploran (se examinan) en secuencia, uno después de otro, La búsqueda secuencial es necesaria, por ejemplo, si se desea encontrar la persona cuyo número de teléfono es 958-220000 en un directorio o listado telefónico de su ciudad. Los directorios de teléfono están o...

Recorridos de un Grafo

Los recorridos de un grafo son de suma importancia, ya que para encontrar un dato en este tipo de estructura, se puede hacer un poco complejo, dependiendo de como este estructurado el grafo, ya que si por ejemplo un nodo del grafo puede estar conectado con el mismo, este tipo de enlace puede enciclar el programa y nunca poder recorrer todos los demás elementos del grafo. En esta sesión vamos a ver los dos tipo de recorridos de un grafo. Recorrido en profundidad Trata de buscar los caminos que parten desde el nodo de salida hasta que ya no es posible avanzar más. Cuando ya no puede avanzarse más sobre el camino elegido, se vuelve atrás en busca de caminos alternativos, que no se estudiaron previamente. La búsqueda en profundidad empieza por un vértice V. del grafo G; no visitado; así hasta que no haya mas vértice adyacentes no visitados. Representación gráfica de un recorrido de profundidad en un grafo Recorrido en anchura Supone recorrer el grafo, a partir de un nodo dado, e...