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