You are on page 1of 6

rboles binarios

Los rboles binarios son estructuras matemticas que organizan un conjunto de elementos. Supondremos en este ejercicio que en un mismo rbol no puede haber elementos repetidos. Cada elemento se almacena en un nodo. Algunos de los nodos pueden estar relacionados, y son estas relaciones las que definen el rbol. Definimos un rbol binario de la manera siguiente !l rbol "ac#o es un rbol binario que no contiene ning$n nodo. Dados dos rboles binarios y y dado un elemento x, se puede formar un tercer rbol binario enraizando y con un nodo que almacene x. Diremos que el nue"o nodo que almacena x es la raz de , es el subrbol izquierdo de , y el subrbol derecho. Diremos tambi%n que la ra#z de es el hijo izquierdo de la ra#z de , la ra#z de es el hijo derecho de la ra#z de y, por consiguiente, la ra#z de es el padre de las ra#ces de ambos subrboles. !n la figura siguiente se muestra un ejemplo de rbol binario A ra#z del rbol A padre de C y de ! C hijo izquierdo de A ! hijo derecho de A

&otemos pues que los nodos de un rbol binario pueden tener ', ( ) * hijos. 1.- Dado un rbol binario con letras may$sculas almacenadas en los nodos +es decir, con un m,imo de *- nodos, pues e,cluimos la ./. y la .0.1, se define su recorrido en preorden como un listado de los elementos contenidos en sus nodos seg$n la definici)n siguiente Si es un rbol "ac#o, se da por finalizado su recorrido. Si no, el primer elemento del listado es el contenido en la ra#z de . A continuaci)n, aparecen en preorden los elementos del subrbol izquierdo de . 2or $ltimo, aparecen en preorden los elementos del subrbol derecho de . !l recorrido en preorden del rbol de la figura anterior es A C 3 ! 4 D. &os proponemos construir un programa que calcule el recorrido en preorden de un rbol binario. !l rbol residir en el fichero 5A63(.DA75, que consta de una serie de l#neas que definen qu% nodos son padres de cules otros. Cada l#nea consta de e,actamente de cinco caracteres 8na letra may$scula que identifica un nodo. 8n carcter blanco. 8na letra may$scula que identifica otro nodo. 8n carcter blanco. 8n s#mbolo que puede ser o bien .9., que indica que el segundo nodo es hijo izquierdo del primero, o bien .:., que indica que el segundo nodo es hijo derecho del primero.

2uede suponerse que la entrada permite construir un rbol binario correcto +es decir, donde todo nodo tenga un $nico padre, e,cepto uno de ellos que es la ra#z; donde todo nodo tiene como m,imo un hijo izquierdo y un hijo derecho; y donde no hay caracteres repetidos1. !l rbol de la figura anterior puede representarse con el fichero de entrada siguiente +o con cualquier otro que sea una simple permutaci)n de sus l#neas1

ARB1.DAT C3: !49 AC9 !D: A!:

La salida 5A63(.6!S5 ser una $nica l#nea que mostrar el listado resultante de recorrer el rbol en preorden, escribiendo un carcter blanco despu%s de cada contenido de nodo.

2.- Definimos el recorrido en inorden de un rbol binario A de manera similar al preorden Si es un rbol "ac#o, se da por finalizado su recorrido. Si no, primero aparecen en inorden los elementos del subrbol izquierdo de . A continuaci)n, aparece el contenido en la ra#z de . 2or $ltimo, aparecen en inorden los elementos del subrbol derecho de . !l recorrido en inorden del rbol de la figura anterior es C 3 A 4 ! D. 2uede demostrarse que un rbol binario se puede reconstruir a partir de sus recorridos en preorden e inorden, y se pide un programa que efect$e este proceso. !l fichero de entrada, 5A63*.DA75, contendr dos l#neas, la primera con el recorrido en preorden y la segunda con el recorrido en inorden. !n cada una de estas l#neas aparecer un carcter blanco despu%s de cada contenido de nodo. 2uede suponerse la correcci)n de este juego de pruebas. !l fichero de salida 5A63*.6!S5 contiene el rbol en el mismo formato que el fichero de entrada 5A63(.DA75 del apartado anterior, con la $nica diferencia que se e,ige una ordenaci)n determinada en las l#neas de salida deben estar ordenadas alfab%ticamente seg$n el primer elemento y, si un nodo tiene los dos hijos, debe aparecer antes el contenido del hijo izquierdo que el del hijo derecho. A continuaci)n se muestran los ficheros correspondientes al rbol ejemplo del apartado anterior

ARB2.DAT ARB2.RE AC3!4D C3A4!D

AC9 A!: C3: !49 !D:

!.- Se pretende ahora obtener todos los rboles que tengan un mismo recorrido en preorden para un conjunto de elementos dado. !l fichero de entrada 5A63<.DA75 estar formado por una $nica l#nea que contendr letras may$sculas +sin repetici)n1 con un blanco a continuaci)n de cada una de ellas, representando un recorrido en preorden. !l fichero de salida 5A63<.6!S5 tendr una l#nea inicial que dir cuantos rboles pueden formarse que tengan ese recorrido en inorden +representaci)n del entero mediante d#gitos =caracteres entre el >'? y el >@?1 y, a continuaci)n, la representaci)n de todos esos rboles con el mismo formato que el fichero 5A63(.DA75 del primer apartado. Detrs de cada rbol habr una l#nea que contendr un $nico carcter .A.. Los rboles deben aparecer en la salida por orden alfab%tico de su recorrido inorden. !n cada rbol indi"idual, se e,ige la misma ordenaci)n de sus l#neas que en el apartado anterior deben estar ordenadas alfab%ticamente por el contenido del primer nodo y, si un nodo tiene los dos hijos, debe aparecer antes el contenido del hijo izquierdo que el del hijo derecho. Be aqu# un ejemplo. Los cinco rboles posibles para el recorrido en preorden dado tienen el siguiente recorrido en inorden A 3 C, A C 3, 3 A C, 3 C A, C 3 A, con lo que cumplen la condici)n de ordenaci)n impuesta por el enunciado

ARB!.DAT ARB!.RE A3C

C A3: 3C: A A3: 3C9 A A39 AC: A A39 3C: A A39 3C9 A

".- 8n rbol binario de b#squeda es un rbol binario que se define de la manera siguiente 7odo rbol "ac#o es un rbol binario de b$squeda. 8n rbol binario no "ac#o es un rbol binario de b$squeda si cumple Si tiene subrbol izquierdo, entonces debe cumplirse a la "ez que la ra#z de sea mayor que el "alor m,imo almacenado en el subrbol izquierdo de , y el subrbol izquierdo de sea un rbol de b$squeda Si tiene subrbol derecho, entonces debe cumplirse a la "ez que la ra#z de sea menor que el "alor m#nimo almacenado en el subrbol derecho de , y

el subrbol derecho de sea un rbol de b$squeda !l inter%s de los rboles binarios de b$squeda radica en que su recorrido en inorden proporciona los elementos ordenados. 2or ejemplo, en la figura siguiente, el rbol de la izquierda es un rbol de b$squeda, mientras que los otros no lo son en el primero de ellos, la ra#z es menor +consideramos el orden alfab%tico1 que el m,imo del subrbol derecho, mientras que en el segundo, el subrbol derecho no es de b$squeda.

Se pide que construyis un programa que, dado un rbol binario de b$squeda, inserte unos cuantos elementos de manera que, despu%s de cada inserci)n indi"idual, el rbol siga siendo de b$squeda. 2or ejemplo, si se quiere insertar la B, la H y la F en el rbol de la izquierda de la figura anterior, el resultado despu%s de cada operaci)n ser#a ! A E A ! E A ! E

!l fichero de entrada 5A63D.DA75 contendr primero el rbol binario de b$squeda con el formato habitual +el mismo que 5A63(.DA751. A continuaci)n, aparecer una l#nea que contendr un $nico carcter .A.. 4inalmente, una nue"a l#nea que contendr los elementos a insertar +letras may$sculas, sin repeticiones, que supondremos no e,istirn en el rbol de partida1, con un $nico carcter blanco despu%s de cada una. !l fichero de salida contendr los rboles correspondientes a cada inserci)n en el mismo orden que se efect$an %stas. Detrs de cada rbol aparecer una l#nea que contendr un $nico carcter .A.. !n cada rbol indi"idual, se e,ige la misma ordenaci)n de sus l#neas que en el apartado anterior deben estar ordenadas alfab%ticamente por el contenido del primer nodo y, si un nodo tiene los dos hijos, debe aparecer antes el contenido del hijo izquierdo que el del hijo derecho. A continuaci)n se muestra un posible fichero de entrada para el ejemplo anterior, y la salida correspondiente

ARB".DAT ARB".RE !A9 AC: EF: EG9

AC: C39 !A9 !E:

!E: A 3B4

EG9 EF: A AC: C39 !A9 !E: GB: EG9 EF: A AC: C39 !A9 !E: G49 GB: EG9 EF: A

4.1.6 rboles balanceados


Para mejorar el acceso a la informacin, los rboles binarios ordenados deben buscar tener en sus subrboles el mismo nmero de componentes, garantizndose de esta manera que en cada paso de la bsqueda se descarte aproximadamente la mitad de los elementos del conjunto. Los rboles con dicha caracterstica reciben el nombre de balanceados. BALANCE: de un nodo en un nodo en un rbol binario, se define como la altura de su subrbol izquierdo menos la altura de su rbol derecho. ada nodo en un rbol binario balanceado tiene balance igual a !, "! o #, dependiendo si la altura de su subrbol izquierdo es ma$or que, menor que o igual a la altura de su subrbol derecho. %&P'( )* +,L,- *. *xisten bsicamente dos tipos de balance de rboles binarios. /rbol balanceado por altura. en dnde todos los hijos o nodos hoja se intentan mantener a la misma distancia de la raz. /rbol balanceado por peso. en dnde los nodos ms 0isitados o utilizados se mantienen a poca distancia de la raz.

You might also like