ARBOL 2-3

Anuncio
Arbol 2-3
ARBOL 2-3
(Un arbol triario Ordenado Balanceado)
• Son un tipo de árbol balanceado por altura
(height balanced).Se define como un árbol en
dónde todos los nodos no-terminales tienen 2
ó 3 decendientes y todos los nodos hoja
tienen la misma longitud (path length) o
distancia desde la raíz.
Es un arbol que cumple con las siguientes
condiciones para garantizar su adecuado
balanceo.
• Todas las hojas se encuentran en el mismo
nivel, ordenadas de izquierda a derecha.
• Todos los nodos internos tienen por lo
menos 2 subarboles asociados no vacios,
aunque la raiz derecha este vacia.
• Fueron introducidos con el objeto de
mejorar el tiempo de acceso en estructuras
de datos manejadas en memoria secundaria,
en las cuales el número de consultas a un
registro influye de manera determinante en
el tiempo de respuesta de la operación.
Pseudocodigo de inserción en un árbol 2-3
Si el árbol esta vacío
entonces crea un nuevo nodo y colocar r1 en el lado izquierdo del nodo .
La estructura de un arbol 2-3 exige que el
crecimiento no se haga a nivel de las hojas
( aunque la insercion sigue siendo en las
hojas), sino a nivel de la raíz, ya que todas
las hojas se deben mantener siempre en el
mismo nivel. El proceso global de inserción
comienza por localizar la hoja en la cual se
debe agregar el elemento.
Si ya hay un elemento y existe espacio en el nodo
hacer
si r1 es menor que el elemento
entonces el elemento 0.se coloca a la derecha .
si no
si r1 es mayor que el elemento
entonces el elemento se coloca del lado izquierdo y r1 del lado derecho.
si no
si el nodo esta lleno se parte en dos nodos del mismo nivel, se crea un nuevo
nodo y se reparten los tres elemento(dos elementos del nodo y el nuevo
elemento).
1
Se pueden presentar varios casos para la
inserción.
Después
Caso 1.- Existe espacio en el nodo. Se coloca allí
adecuadamente el elemento y la estructura de
un arbol no se altera.
si elemento es mayor que r2, sube r2 a su padre.
si elemento es menor que r1, sube r1 a su padre.
Situación inicial
si elemento es mayor que r1, pero menor que r2 sube el
elemento a su padre.
r1
Situación final
r1<elem
r1>elem
r1
r1
elem
elem r1
Caso 2.- El nodo está lleno. Este se debe partir en dos
nodos del mismo nivel, repartiendo los tres elementos
(dos elementos del nodo y el nuevo elemento). De la
siguiente manera
Situación inicial
r1 r2
elem>r2
r2
elem<r1
r1
r1 r2
30
r1
r2
r2
Sube r2
Sube r1
Sube elem
Inserta el elemento 2: corresponde al caso 1. Se mueve a la
derecha la raíz izquierda para dar cabida al nuevo
elemento.
Inserta el elemento 15: corresponde al caso 2.
Encuentra una hoja llena. La parte en dos nodos
e inserta en el padre el elemento que se encuentre
en la mitad de los tres (2<15<30). Como el padre
es vacío, se crea un nuevo nivel se coloca el
elemento como la raíz izquierda del nodo y se le
asocia los dos nodos que se acaban de partir.
15
30
15 63
2
30
65
Inserta el elemento 1: correspondiente
al caso 1.
15 63
1
2
30
Inserta el elemento 65: corresponde al
caso 2. Se parte la hoja y sube al padre
el elemento de la mitad (63). Al
insertar dicho valor en el padre se
trata como el caso 1, porque en el nodo
hay espacio.
65
Inserta el elemento 63: correspondiente al caso 1.
15
2
elem
elem
Inserta el elemento 30: se crea una hoja y se coloca el
elemento como raíz izquierda
30
2
r1
r1<elem<r2
2
Luego, el elemento que no fue incluido en los dos nodos
nuevos, se sube en la estructura y se inserta en su padre. El
proceso se repite hacia arriba, ya que al partir en dos el
nodo se esta generando un nuevo subárbol que puede
generar que los ancestros se tengan que partir a su vez para
poderlo incluir, como se muestra en el siguiente ejemplo.
Situación intermedia
30
63
2
Inserta el elemento 0: corresponde al
caso 2. Se parte la hoja (1,2) ,se coloca
alli los elementos 0 y 2 y sube el valor 1
a su padre. Como el nodo del padre
(15,63) esta lleno tambien se debe
partir, dejando en ese nivel los
elementos 1 y 63, y subiendo el 15.
15
1
63
0
2
30
BIBLIOGRAFIA
DISEÑO Y MANEJO DE ESTRUCTURA DE
DATO EN C
65
Inserta el elemento 14: correspondiente
al caso 1.
15
1
THE DESIGN AND ANALYSIS OF COMPUTER
ALGORITHMS.
63
AHO, ALFRED V.
0
2
14
30
65
3
Descargar