Está en la página 1de 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
C 3 :
! 4 9
A C 9
! 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
A C 3 ! 4 D A C 9
C 3 A 4 ! D A ! :
C 3 :
! 4 9
! 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
A 3 C C
A 3 :
3 C :
A
A 3 :
3 C 9
A
A 3 9
A C :
A
A 3 9
3 C :
A
A 3 9
3 C 9
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
!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
! A 9 A C :
A C : C 3 9
E F : ! A 9
E G 9 ! E :
!
C
A
F
E
G
3
!
C
A
F
E
G
3
B
!
C
A
F
E
G
3
B
4
! E : E G 9
A E F :
3 B 4 A
A C :
C 3 9
! A 9
! E :
G B :
E G 9
E F :
A
A C :
C 3 9
! A 9
! E :
G 4 9
G B :
E G 9
E F :
A

También podría gustarte