184 Capitulo 6

.ARBOLES

La media de la longitud de camino extemo: LCEM = 155/40

= 3.87

6.3

ARBOLES BINARiOS

Un arbol ordenado es aquel en el cualla distribuci6n de las ram as sigue un ciert_~..5 Los arboles orden ados de grado 2 son de especial interes en el area de la com~ porque permiten representar la informacion relacionada con la solucion de mucbos blemas. Estos arboles son conocidos con el nombre de arboles binarios. En un arbol binario cada nodo puede tener como maximo dos subarboles y ese distinguen entre sf como el subarbol izquierdo y el subarbol derecho, segun su ubi con respecto al nodo rafz. Formalmente se define un arbol binario tipo T como una estructura ho nea, resultado de la concatenacion de un elemento de tipo T, llamado raiz, e arboles binarios disjuntos, llamados subarbol izquierdo y subarbol derecbs, arbol binario especial es el arbol vacfo. Los arboles binarios tienen multiples aplicaciones. Se les puede utilizar fJ'::o" presentar la solucion de un problema para el eual existen dos posibles alter. (arbol de decisiones), para representar un arbol genealogico (construido en :: ascendente y donde se muestran los ancestros de un individuo dado), para repress. la historia de un campeonato de tenis (construido en forma ascendente y donde __ un ganador, 2 finalistas, 4 semifinalistas y asf sucesivamente) y para represeni presiones algebraieas construidas con operadores binarios. Esto solo por eitar a~ de sus multiples usos. En la figura 6.6 se muestran tres diagram as correspondientes a una estrucsez, arbol binario. En la figura 6.6a hay un arbol binario de biisqueda (esta variante ~ sentara con detalle mas adelante), en la figura 6.6b el arbol binario que represese, expresion (A * B) + (ClD) A 3.5 yen !a figura 6.6c un arbol genealogico. Los arboles orden ados de grado mayor a 2 representan tarnbien estructuras portantes. Se conocen con e! nombre de arboles multicaminos y seran estudiaoes ade!ante en este mismo capitulo,

----- ----------------- 27 32 59 11 50 77 a) A . 3.5 ~\ JOSECAIR6 / c) MARiABATHSrurn VALIENTE \ .:. /~ B + c /\ D b) I r -.

son diferentes. En la figura 6.1 Arboles bin io distinto1.7 A Arboles binarios distintos. . j D /p -.S se preserza. informaci6n que contienen sus nodos difiere entre sf.3. Arboles binarios similares. En la figura 6.7 se presentan dos ejemplos de arboles. C R s 5 b) Por ultimo. B / a) A B c j B D b) c /\ D B Dos arboles binarios son similares cuando sus estructuras son identicas. B / a) A B / A B / A ~ C B j D b) D .}y quivalent Dos arboles binarios son distintos cuando sus estructuras -la distribuci6n de arcos. los arboles binarios equivalentes se definen como aquellos ~ similares y adernas los nodos contienen la misma informaci6n. distintos.: ejemplos de arboles binarios similares. En la figura 6. fKiU«A i.186 Capitulo 6 ARBOLES 6. . similar . Arboles binarios equivalentes.9 Yi' tran dos ejemplos de arboles binarios equivalentes . JjJ // D a) A A B / A -. F11iUAA .

tienen dos hijos: el subarbol izquierdo y el subarbol derecho. 6.:jemplo 6. . excepto los del ultimo nivel.1 Oa. • Los arboles de la figura 6. En la figura 6.10b Y 6.Con el fin de c1arificar los conceptos anteriores.10. . lOa y 6. se puede afirmar 10 siguiente: A .N b) A L A A B \ D c) B /~ d) f El arbol de la figura 6. se presenta el siguiente ejemplo .11 se presentan dos ejemplos de arboles binarios completos. 6.lOd.10a.1 Od son sirnilares.( ~c D a) ! X /'~ j .3 Dados los arboles binarios de la figura 6.3. 6.10c es distinto de los arboles de la figura 6. Los arboles de la figura 6.lOd son equivalentes. .10b y 6.2 Arholes binaries completes Se define un arbol binario completo (ABC) como un arbol en el que todos sus nodos.

b) De altura 4.. se puede caleee apJicando la siguiente formula: NlTMERO DE NODOS(ABC) = 2h - 1 Formul . Por 10 tanto.1 tacional de muchos problemas. en arboles binarios. Cabe ac1arar que existen algunos autores que definen un arbol binario comples. 6. Las operaciones que se deben aplicar para lograr la conver. por las razones ya mencionadas.. par ejemplo. UIX _ altura 9 tendra 511 nodos y un arbol de altura 17 tendra 131 071 nod os.3 Reprei2ntad6n de arboles generales c o bin rlos Los arboles binarios. _ otra forma y otros que utilizan el termino !lena para referirse a 10 que en este lite denomina completo. D E a) F G D E F G /\ H /\ I J K b) L /\ M /\ N o El mimero de nodos de un arbol binario completo de altura h. a) De altura 3.3. En esta seccion se daran los pasos necesarios para lograrlo. con 0 an hijos.12a. Ademas. su usa se ve favorecido por su dinamisne no linealidad entre sus elementos y por su senciIIa programaci6n. re-'c:~ muy util poder convertir arboles generales.cdel arbol general al arbol binario correspondiente son las siguientes: . L: Asi. Considere el arbol ~ neral de la figura 6.. se aplican en la solucion CO!I:. un arbol binario completo de altura 5 tendra 31 nodos.188 Capitulo 6 ARBOLES ~IGUP Ii 11 Arboles binarios completos.

--+ J [(. En la figura 6. B c A F G H ..12c se observa el arbol binario.. Rotar el diagrama resultante. Relacionar en forma vertical el nodo padre con el hijo que se encuentra mas a la izquierda. Ademas. L j D /~ E B C I /~ \ \ G / \ H F ! IJ \ L K c) .1.l2b se visualiza el arbol luego de aplicar los dos primeros pasos. obtenido luego de aplicar el tercer paso. 2./l~ E J j\ K L J A y ~ D r----+ c 1 E~ F G r----+ H a) 1 I 1 J b) .. aproximadamente 4S grados hacia la izquierda. J.. Enlazar los hijos de cada nodo en forma horizontal -los hennanos-. En la figura 6. y as! se obtendra el arbol binario correspondiente. se debe eliminar el vinculo de ese padre con el resto de sus hijos..

1 J Conversion de un arbol general en un arbol binario.l3c se observa e! arbol binario que se obtiene luego de que se eel tercer paso.------+ ~~ F G D I H N b) .~ c J F G H M /J~ I 0 D j L A /\ a) N 1 ( B E .13b se observa una grafica del arbol luego de aplicar los dos primeresos. c) Arbol binario luego de aplicar el paso 3.____.13a. I i----+ J i----+ K 1 L 1 Mr 1 0 E L. a) Arbol general. -: <. En la figura 6. B / A F /\ C N c) . ~ttiURA6.. / -.190 Capitulo6 ARBOLES Ejemplo 6. se debe convertir a un arbol b::= En la figura 6.4 Dado como dato el arbol general de la figura 6.. E /\ B /. b) Arbol binario luego de aplicar los pasos 1 y 2.

J y K eran hennanos. Otras deducciones que se pueden realizar observando la figura 6. . De la figura 6.se encuentra un nodo que era hijo de este en el arbol general. '~anos. a) E -. /:::. .' 1.13c podemos deducir que Cera hennano de B.F.. es distinta de vacfo se encuentra un nodo que era hennano de este en el arbol general. '1 A~r. . C YD eran hijos de A. excepto el nodo raiz. primero en una linea oblicua continua orientada 45 grados hacia la izquierda y luego en una linea continua oblicua orientada 45 grados hacia la derecha. En la figura 6. generado a partir de un arbol general. Es de notar que los hijos de un nodo se encuentran en la grafica. <:".13c son las siguientes: .: '" 'K ">""""/ ."""I". En la figura 6. hermano de B. "'"""". "... . . se debe cumplir 10 siguiente: L Si la rama derecha de cada nodo. Aplicando el mismo criterio deducirnos tambien que D era hennano de C y.. H. por 10 tanto. L__ . En la rama izquierda de cada nodo -si esta es distinta de vacfo-. Otras deducciones que se pueden realizar observando la figura 6. B. podemos afinnar que F era tam bien hijo de B."'J"'~""""""" """<. H .6.'. 1. De la figura 6. My N eran hijos de G. G era hijo de C.13c podemos deducir que E era hijo de By como por (1) F era hennano de E.13c son las siguientes: • E Y F eran hennanos.. por transitividad. .ol!S BINARI' 5 191 Observe que para todo nodo de un arbol binario..> b) .'\.14 se presentan tres diagramas diferentes donde se pueden observar algunos ejemplos. Es de notar que los hennanos se encuentran en la grafica en una linea oblicua continua. My N eran hennanos. orientada 45 grados hacia la derecha. " :..15 hay tres diagramas diferentes donde se observan algunos ejemplos.

< . . . Es posible utilizar el algoritmo de conversi6n analizado en la secci6n anterios.. FIG L 15 Nodos hijos. " .. /~~ E A /\ c D I . formado por tres arboles generales.3. Los pasos que se deben aplicar para lograr la conversi6n del bosque a UD.192 Capitulo 6 ARBOLES En la figura 6.' . . It" .r:">. . ". . K H F \ G /1\ L Q /I~ R p 1 M u /\." C .. .. . ... '. / ... . :::JC algunas modificaciones.' " / a) b) c) 6....binario son los siguientes: Bosque de arboles generales. de la t.. .. G .4 Rep' "tacion de n 05QU como rhol binllrio Un bosque representa un conjunto normalmente orden ado de uno 0 mas arboles? rales..16. para generar un arbol binario a partir de un bosque. .. Considere por ejemplo el bosque.1Sb no existe lfnea oblicua orientada hacia la derecha porque G ~ iinico hijo del node C. .. T X . '..' ..~ 6.rr.: .

Rotar el diagrama resultante aproximadamente 45 grados hacia la izquierda y asf se obtendra el arbol binario correspondiente. J. En la figura 6.en forma horizontal. Ademas. ~ de un bosque en arbol binario.17 a se muestra el arbol luego de aplicar los tres primeros pasos. r-. • Relacionar los hijos de cada nodo -los hennanos. Enlazar en forma vertical el nodo padre con el hijo que se encuentra mas a la izquierda. 2. se debe eliminar el vinculo del padre con el resto de sus hijos. Enlazar en forma horizontal las raices de los distintos arboles generales. a) Arbol binario luego de aplicar los pasos 1. H C I /'~ \ G D A P \ F \ J K j I I J U L /\ T Q R \ i s X \ b) M \ .1.17 b se observa el arbol binario obtenido luego de que se realiza el cuarto paso. En la figura 6. A H P ~ B ---+ C ---+ D ! I ! ~ J Q ---+ R ~ s ! E ---+ F ! G ! K ---+ L ---+ M l T ~ a) U ---+ X E / -. Arnol binario luego de aplicar el paso 4.

a) Bosque.-.18c se puede apreciar el arbol binario que se obtiene luego de se aplica el cuarto paso.18a.. c) Arbol binario luego de aplicar el cuarto paso..-+M'-+ t T \ p b) .12 Conversion de un bosque en arbol binario..-+ 1 E L .. En la figura 6. segundo y tercer pasos...194 Capitulo 6 ARBOLES EjempJo 6..+ I K 1 R 0 I D . FIG~RA6. se desea convertirlo a un arbol binarx En la figura 6.5 Dado como dato el bosque de la figura 6. D /\ c E G /l~ H F K L I N Q /~ [ T a) \ u B J Q 1 B~ C G ~H....l8b se observa una grafica deL arbol Iuego de aplicar Lostres prirnero pasos. B -: A '<. b) Arbolluego de aplicar el primero.

INFO: representa el campo donde se almacena la informacion del nodo. 6. desde el punto de vista del paradigma orientado a objetos. En este libro se explicara y utilizara la primera forma. los conceptos explicados son los fundamentos requeridos para el uso de las mismas. respectivamente. La definicion ENLACE NODO de un arbol binario en lenguaje algoritmico es como sigue: = ANODO = REGISTRO IZQ: tipo ENLACE INFO: tipo de dato DER: tipo ENLACE {Fin de la definicion} . se cumplen los dos incisos sefialados en la conversion de un arbol general en un arbol binario. Cada uno de ellos contiene como minima tres campos. Por medio de arreglos. Dado el nodo T: T '- IZ_Q_ _ _j_ INFO _ DER En el se distinguen II tres campos: lZQ: es el campo donde se almacena la direcci6n del subarbol izquierdo del node T. puesto que representa la mas natural para tratar una estructura de datos de este tipo. Como en las otras estructuras de datos presentadas en este libro. Los dos restantes se utilizaran para apuntar los subarboles izquierdo y derecho. rb Is blnarics en memoria Las dos maneras mas comunes de representar un arbol binario en memoria como variables son: z. Normalmente en este campo y en el transcurso de este libro se almacenara un valor simple: mimero 0 caracter. Sin embargo. del nodo en cuesti6n. Los nodos del arbol binario se representan como registros. 10 que se estudiara a continuacion sigue siendo valido para las clases. en la practica es cormin almacenar en este campo cualquier tipo de dato. En un campo se almacenara la informacion del nodo.195 Es de notar que para todo nodo de un arbol binario. tambien conocidos dinarnicas.5 Represen aciDn de . Sin embargo. DER: es el campo donde se almacena la direccion del subarbol derecho del nodo T. independientemente del paradigma y dellenguaje utilizado para su implementacion. que se obtiene a partir de un bosque. Al final del capitulo se presentara una breve introduccion a los arboles.3. Por medio de datos tipo puntero.

(A FIGI! HI de un arbol binario en memoria. 6. a) Arbol binario. cuando se estudien otros tipos de arboles. figura 6. Note ellector que en la figura 6. A continuaci6n se presentan los algoritrnos de algunas de estas operaciones y [~ adelante.5. Un algoritrno muy simple para fonnar un arbol. Su representaci6n en memoria es como la que se muestra eni. es el que se muestra a continuacion.5 C a) /\ [ I I. b) Su representaci6n Representaci6n en memoria.19a. · nes. 1\ para representar el ox. I I I 3.6 Operaciones er arboles binaries Una de las operaciones basicas de un arbol binario es la creaci6n del mismo en meIIX· ria."" Ejemplo 6.19b.. .3. se explicaran otras. II I NIL jo I B II NIL ~ // 1/ I / I. . .196 Capitulo 6 ARBOLES Nota: Es importante observar que se utiliza el sfmbolo cepto de dato tipo puntero.r: >: + A 1\ /~ B I /~ D 3. I 1\ II NIL A .: II \ NIL b) NIL NIL Como todas las estructuras de datos.5 ~ D NIL IIcII II NIL NIL K:::.6 Considere el arbol binario de la figura 6. par medio de la creaci6n dinamsa de nodos y la asignaci6n a estes de infonnaci6n. que representa la expresi6n algebraic * B) + (C / D) 1\ 3.19b se utiliza el termino NIL para hacer refereecz al arbol vacfo. los arboles tienen asociadas ciertas operacr -.

IZQ +. 197 0 {EI algoritmo crea un arbol binario en memoria. Existen tres formas diferentes de efectuar el recorrido y todas elias de naturaleza recursiva. APNODO es una variable de tipo ENLACE -puntero a un nodo--.Existe nodo por derecha: I(SI) _ O(No)?" 7.DER {LJamada recursiva} si 110 Hacer APNODO"..OTRO Regresar a Crea jirbol con APNODO".. estas son: cJ Recorrido en preorden Visitar la rafz Recorrer el subarbol Recorrer el subarbol izquierdo derecho • III Recorrido en inorden I Recorrer el subarbol izquierdo .Existe nodo por izquierda: I(SI) _ O(No)?" 1. IZQ Y DER son campos del registro NODO.IZQ +. LeerRESP I\. La primera vez APNODO se crea en el programa principal} {INFO.NIL (Fin del condicionaI del paso 8) Una vez que se crea el arbol binario. Leer RESP .IZQ {LJamada recursiva} si 5 110 Hacer APNODO". INFO es de tipo caracter.INFO {Lee la informacion y se guarda en el nodo} " Escribir "i. Si (RESP = "Sf') entonces Crear(OTRO) {Se crea un nuevo nodo} Hacer APNODO". insertar un nuevo nodo. Si (RESP = "Sf') entonces Crear(aI'RO) {Se crea un nuevo nodo} Hacer APNODO". de tal manera que todos los nodos del rnismo sean visitados una sola vez.DER +. IZQ y DER son de tipo puntero._IlU'tS ~IIIMI. se pueden realizar otras operaciones sobre sus elementos: recorrer todos los nodos.\ "omnw Crea jirbol .G3 .. Una de las operaciones mas importantes que se realiza en un arbol binario es el recorrido de los rnismos.afRO Regresar a Crea jirbol con APNODO".NIL (Fin del concticional del paso 4) Escribir "l. elirninar alguno de los existentes 0 buscar un valor determinado.'. respectivamente } __ Leer APNODO".DER +. Las variables RESP y OTRO son de tipo caracter y de tipo ENLACE. Recorrer significa visitar los nod os del arbol en forma ordenada.

PREORDEN:AB DEC FG INORDEN: DB EA FCG C E a) POSORDEN: DE B FG CA D F G ." INORDEN: GKDBA C POSORDEN: KG DB H I EJ rc /~ H F j G \ J \ b) K .RBOLES • It c! Visitar la rafz Recorrer el subarbol derecho Recorrido en posorden Recorrer el subarbol izquierdo Recorrer el subarbol derecho Visitar la rafz En la figura 6. el arbol de la figura 6.198 Capitulo 6 A.r D A >: 1\ I PREORDEN:A B D GKC EH t: H EIC F. cabe ac1arar. la visita del nodo im¢I:: la impresion de su contenido.:al efectuar los diferentes tipos de recorrido. En este ejemplo. Aunque. sin los parentesis respectivos que indices ' precedencia de los distintos operadores.20 se muestran tres arboles binarios con el resultado que se 0bU=. usance • recorrido preorden. por ultimo. la impresion de la informacion de sus nodos. por e~ plo. Note que en un arbol binario que representa una expresi6n algebraica.20 Arboles binarios y sus recorridos. produce la notacion polaca prefija. 0 • F GUrtA '. En el caso del recorrido inorce se obtiene la notaci6n convencional y. el recorrido posorden produce 121 taci6n polaca posfija.20c.

En la columna Nodo actualla Hamada (N) sefiala la rama que se extrajo de la pila. IZQ y DER son variables de tipo puntero) I_ Si (APNODO .5 f\ [J Se analizan a continuaci6n los algoritmos que efectuan los diferentes tipos de recorridos en un arbol binario.DER {Llamada recurs iva a Preorden con la rama derecha del nodo en cuesti6n} . la Hamada (N) indica el orden en el cual las ramas pendientes de visitar se introdujeron en la pila. por ejemplo escribir.5 3.INFO} Regresar a Preorden con APNODO". Algoritrno n _ Preorden {Este algoritmo realiza el recorrido preorden de un arbol binario. IZQ YDER son campos del registro nodo.2.63 PREORDEN: + *A B"IC INORDEN: A D 3. En la siguiente tabla se presentan los pasos necesarios para obtener el recorrido preorden del arbol binario de la figura 6. INFO es una variable de tipo caracter. APNODO es un dato de tipo ENLACE -puntero a un nodo-} {INFO.IZQ {Llamada recursiva a Preorden con la rama izquiercla del nodo en cuesti6n} Regresar a Preorden con APNODO".5 "+ 3. NIL) entonces Visitar el APNODO {Escribir NODO".20 a). Observe ellector que el orden en que los nodos se visitaron es: A-B-D-E-C-E-G .. En la columna Pita: rama pendiente de visitar. {Fin del condicional del paso I} Nota: Cabe destacar que el termino visitar se puede reemplazar por cualquier otra instrucci6n valida. Note que esta aclaraci6n se apJica tambien para los otros tipos de recorridos.5 199 * B +/ D" * A B /~ C c) " POSORDEN: A B * C D13. sumar 0 comparar la informaci6n del nodo. utilizando el algoritmo 6.

DER -+ -+ -+ C (1) E (2) NIL (3) B D B".200 Capftulo6 ARBOLES Recorrido preorden A 2 3 4 B A A''.DER - G (5) NIL (6) F NIL (6) NIL (5) G NIL (7) NIL F 11 12 13 14 G GA. {Fin del condicional EJemplo 6.DER del paso l.IZQ -+ B A".IZQ -+ C". nodo. Inorden eon la rama izquserda APNODO".3.INFO} can la rama derecha del nodo en cuestion} del nodo en cuesti6n} Regresar [Llamada Regresar {LJamada a Inorden recursiva a Inorden recursiva Visitar elAPNODO can APNODO". usando el aigoritmo 6.DER --+ NIL (4) 8 9 10 C C".DER S 6 7 E E".INFO APNODO es un registro c..IZQ _. tipo ENLACE-puntero {INFO. .IZQ-F F-'.IZQ -+ D NIL (3) NIL (2) E NIL (4) NIL (l)C NIL DII.} 2.DER - NIL (7) 15 \' gori rrno fl. fA y DER son variables f.IZQ --+ NIL GA.8 En la tabla 6. Si (APNOJ!)O pO de tipo puntero} NIL) entonces eon APNOIDOII JZQ a Inorden [Escribir a.4 se muestra la generaci6n del recorrido inorden del arbol de la fi~ 6.20a. NIL E".':> Inorden (Este algoritmo realiza el recorrido a un nodo-) inorden de un arbol binario.DER B".IZQ-+D D" . IZQ Y DER son campos del registro es una variable de tipo caracter.DER NIL F".

NIL G (13) (14) 14 15 (13) NIL En la columna Pila: rama pendiente de visitar.NIL D(6) B (4) 8".DER C --+ G (9) (10) --+ NIL F (12) F".lZQ E --+ NIL (7) (8) NIL (7) NIL 8 9 10 II 12 13 (1) C F C". IZQ y DER son campos del registro nodo.lZQ --+ NIL E (8) A (2) E".DER A --+ C (1) (2) (3) (4) (5) (6) 2 3 B D B".lZQ --+ F C".NIL G(14) G NIL G". APNODO es un dato de tipo ENLACE -puntero a un nodo--} {INFO.lZQ .NIL F (11) (12) NIL (ll) NIL (9) C (10) G".lZQ --+ B A". las llamadas (N) indican las instrucciones que se extrajeron de la pila.DER . Note que esta observaci6n tambien es valida para la tabla 6. la Hamada (N) indica el orden en el cuallas ramas pendientes de visitar fueron introducidas a la pila. El orden en que se visitaron los nodos es: D-B-E-A-F-C-G \lg~ 11 11m I '\ Posorden {Este algoritmo realiza el recorrido posorden de un arbol binario.201 inorden A A".lZQ F".DER-E B D".DER . IZQ y DER son variables de tipo puntero} .DER-NIL D 4 5 6 7 (5) (3) NIL NIL E E".IZQ-D D".lZQ . En las columnas Nodo actual y Nodo visitado. INFO es una variable de tipo caracter.5.

202 Capitulo 6 ARBOLES t.9 En la tabla 6..DER~ C m m (3) (4) (5) (6) 2 B B"-.DER --+ 8 9 10 (9) G (10) (II) (12) 11 F F". Si (APNOPO ..IZQ {Llamada recursiva a Posorden con la rama izquierda del nodo en cuesti6n} Regresar a Posorden con APNODOII.lZQ ---+ NIL D DII.DER---+NIL 4 5 6 (6) (4) NIL NIL E £I'.5 se presentan los pas os necesarios que se siguieron para efectuar eJ rrido posorden del arbol de la figura 6. NIL) entonces Regresar a Posorden con APNODOII.DER---+ NIL 12 13 14 NIL (12) NIL (10) G GA_iZQ~NIL F (11) G G'\DER~NIL (13) (14) 15 16 17 18 NIL (14) NlL G(]3) C (9) A (1) .lZQ --+ B A A".20a..IZQ --+ D B B".IZQ-F (3) C C".DER ---+ (7) NIL (8) 7 NIL (8) NIL E (7) B (2) C C". aplicando el algoritmo anterior.IZQ ---+NIL F F".<\ URecorrido posorden A AII.DER~E 3 D DII. TAal.IZQ ---+ D NIL (5) E EII.DER {Llamada recursiva a Posorden con la rama derecha del nodo en cuesti6n} Visitar cl APNODO (Escribir APNODOIl.INFO) (Fin del condicional del paso 1) Ejempl'o 6.

Sign up to vote on this title
UsefulNot useful