Estructuras de Datos - Arboles Binarios

download Estructuras de Datos - Arboles Binarios

of 19

Transcript of Estructuras de Datos - Arboles Binarios

  • 5/11/2018 Estructuras de Datos - Arboles Binarios

    1/19

    184 Capitulo 6 . A R B O L E SLa media de la longitud de camino extemo:

    LCEM = 155/40 = 3.87

    6 .3 ARBOLES B I N A R i O SUn arbol ordenado es aquel en el cualla distribuci6n de las ramas sigue un ciert_~..5Los 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 mucbosblemas. Estos arboles son conocidos con el nombre de arboles binarios.

    En un arbol binario cada nodo puede tener como maximo dos subarboles y esedistinguen entre sfcomo el subarbol izquierdo y el subarbol derecho, segun su ubicon respecto al nodo rafz.

    Formalmente se define un arbol binario tipo T como una estructura honea, resultado de la concatenacion de un elemento de tipo T,llamado raiz, earboles 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 f J ' : : 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 represenipresiones 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 estructurasportantes. Se conocen con e! nombre de arboles multicaminos y seran estudiaoesade!ante en este mismo capitulo,

  • 5/11/2018 Estructuras de Datos - Arboles Binarios

    2/19

    ----- -----------------

    27

    32 59

    11 50 77

    a)

    A

    +/~.:, r -.I/\B 3.5c D

    b)

    JOSECAIR6~\ / MARiABATHSrurnVALIENTE \c)

  • 5/11/2018 Estructuras de Datos - Arboles Binarios

    3/19

    186 Capitulo 6 ARBOLES

    6 .3 .1 A rboles bin io distin to1. sim ilar ;}y quivalent

    F 1 1 i U A A .7A rb o le s b in a ri os d is ti nt os .

    fKiUA i.A rb ol es b in ar io s s im i la re s.

    .,A rb ol es b in ar io s e qu iv a-lentes,

    Dos arboles binarios son distintos cuando sus estructuras -la distribuci6n dearcos- son diferentes. En la figura 6.7 se presentan dos ejemplos de arboles,distintos.

    A

    A B c B/ j /\B B D ca) b)

    Dos arboles binarios son similares cuando sus estructuras son identicas,informaci6n que contienen sus nodos difiere entre sf. En la figura 6.S se preserza.:ejemplos de arboles binarios similares.

    A A/A / p - ./ - . C Rj s

    D 5b)

    /Jj J D

    a)

    Por ultimo, los arboles binarios equivalentes se definen como aquellos ~similares y adernas los nodos contienen la misma informaci6n. En la figura 6.9 Yi'tran dos ejemplos de arboles binarios equivalentes .

    A/A/~

    B CjD

    b)

    A B/B B

    a)

    D

    D

  • 5/11/2018 Estructuras de Datos - Arboles Binarios

    4/19

    . :jemp lo 6 .3Con el fin de c1arificar los conceptos anteriores, se presenta el siguiente ejemplo .

    Dados los arboles binarios de la figura 6.10, se puede afirmar 1 0 siguiente:

    A A

    ;( ~c /'~X L! jD .Na) b)

    A A

    /~fB\D

    c) d)

    El arbol de la figura 6.10c es distinto de los arboles de la figura 6.10a, 6.10b Y6.lOd.

    , Los arboles de la figura 6.1Oa,6.10b y 6.1Od son sirnilares. Los arboles de la figura 6. lOa y 6.lOd son equivalentes.

    6 . 3 . 2 Arholes binaries completesSe define un arbol binario completo (ABC) como un arbol en el que todos sus nodos,excepto los del ultimo nivel, tienen dos hijos: el subarbol izquierdo y el subarbol dere-cho. En la figura 6.11 se presentan dos ejemplos de arboles binarios completos.

  • 5/11/2018 Estructuras de Datos - Arboles Binarios

    5/19

    188 Capitulo6

    ~IGUP Ii 11A rb o le s b in a ri os c o m pl e-tos. a) D e a ltu ra 3 . b) Dea ltu ra 4 .

    ARBOLES

    D E F Ga)

    D E G/\ /\ /\ /\H I J N oL M

    b)

    El mimero de nodos de un arbol binario completo de altura h, se puede caleeeapJicando la siguiente formula:

    NlTMERO DE NODOS(ABC) = 2 h - 1 Formul ...L:Asi, par ejemplo, un arbol binario completo de altura 5 tendra 31 nodos, UIX _

    altura 9 tendra 511 nodos y un arbol de altura 17 tendra 131 071 nodos.Cabe ac1arar que existen algunos autores que definen un arbol binario comples, _

    otra forma y otros que utilizan el termino !lena para referirse a 10 que en este litedenomina completo.

    6.3.3 Reprei2ntad6nde arboles genera les c o bin rlosLos arboles binarios, por las razones ya mencionadas, se aplican en la solucion CO!I:.1tacional de muchos problemas. Ademas, su usa se ve favorecido por su dinamisneno linealidad entre sus elementos y por su senciIIa programaci6n. Por 10 tanto, re-'c:~muy util poder convertir arboles generales, con 0 an hijos, en arboles binarios.

    En esta seccion se daran los pasos necesarios para lograrlo. Considere el arbol ~neral de la figura 6.12a. Las operaciones que se deben aplicar para lograr la conver,;c-del arbol general al arbol binario correspondiente son las siguientes:

  • 5/11/2018 Estructuras de Datos - Arboles Binarios

    6/19

    B./l~E

    1. Enlazar los hijos de cada nodo en forma horizontal -los hennanos-.2. Relacionar en forma vertical el nodo padre con el hijo que se encuentra mas a la

    izquierda. Ademas, se debe eliminar el vinculo de ese padre con el resto de sushijos.

    J, Rotar el diagrama resultante, aproximadamente 4S grados hacia la izquierda, y as!se obtendra el arbol binario correspondiente.En la figura 6.l2b se visualiza el arbol luego de aplicar los dos primeros pasos. En

    la figura 6.12c se observa el arbol binario, obtenido luego de aplicar el tercer paso.

    c

    F G Hj\ JJ K L

    a)

    AjB/~D C/~ /

    I \ E G

    \ \F HI J! L\

    K

    c)

    A~y c1D r----+ E~ F G r----+ H

    1 1 JI J ,.....--+ [(, Lb)

  • 5/11/2018 Estructuras de Datos - Arboles Binarios

    7/19

    ~ tt iURA6 , 1 J /.~o nv ers io n d e u n a rb olg en era l e n u n a rb ol b in ario .a ) A rb o l g e ne ra l. b) Arbo l B c Db in ar io lu eg o d e a plic ar /\ J /J~os pasos 1 y 2. c) Arbo lb in ario lu eg o d e a plic ar e lp as o 3 . E F G H Ij /\

    L M N 0a)

    A1B ~~ D( I A/, . ------+ F G H , , _ _ _ _ . I i----+ J i----+ K1 1 1 B-:

  • 5/11/2018 Estructuras de Datos - Arboles Binarios

    8/19

    '~anos.

    L__

    6. '1 A~r,ol!S BINARI' 5 191Observe que para todo nodo de un arbol binario, generado a partir de un arbol ge-

    neral, se debe cumplir 10 siguiente:L Si la rama derecha de cada nodo, excepto el nodo raiz, es distinta de vacfo se en-

    cuentra un nodo que era hennano de este en el arbol general. De la figura 6.13cpodemos deducir que Cera hennano de B. Aplicando el mismo criterio deducirnostambien que D era hennano de C y, por 10 tanto, por transitividad, hermano de B.Otras deducciones que se pueden realizar observando la figura 6.13c son las si-guientes: E YF eran hennanos.

    My N eran hennanos.H,1, J y K eran hennanos.Es de notar que los hennanos se encuentran en la grafica en una linea oblicua

    continua, orientada 45 grados hacia la derecha. En la figura 6.14 se presentan tresdiagramas diferentes donde se pueden observar algunos ejemplos.

    ,,, ,, ,, ,, ,, ," :, H ",

    < : " , E -. "'"""",'\."""I",',,"'J"'~"""""""" " " < , F , / : : : . > ' " ' K . '

    b) .: " > " " " " /)1 . En la rama izquierda de cada nodo -si esta es distinta de vacfo-- se encuentra un

    nodo que era hijo de este en el arbol general. De la figura 6.13c podemos deducirque E era hijo de By como por (1) F era hennano de E, podemos afinnar que F eratambien hijo de B. Otras deducciones que se pueden realizar observando la figura6.13c son las siguientes:., B, C YD eran hijos de A.

    My N eran hijos de G.G era hijo de C.

    Es de notar que los hijos de un nodo se encuentran en la grafica, primero en unalinea oblicua continua orientada 45 grados hacia la izquierda y luego en una linea con-tinua oblicua orientada 45 grados hacia la derecha. En la figura 6.15 hay tres diagramasdiferentes donde se observan algunos ejemplos.

  • 5/11/2018 Estructuras de Datos - Arboles Binarios

    9/19

    192 Capitulo 6

    F IG L 15Nodos h i jo s.

    ARBOLES

    En la figura 6.1Sb no existe lfnea oblicua orientada hacia la derecha porque G ~iinico hijo del node C .

    a)

    ,," . . . . ., ,, ," ' .., ,, ,,,' C /, ,,,' It" .:, ,< G /, ,", ", ,, ,, ,, ,','b) c)

    6.3.4 Rep' " tacion de n 05QU c omo rhol binllrio

    B os qu e d e a rb ole s g en er ale s.

    A/~~/\

    E F

    Un bosque representa un conjunto normalmente ordenado de uno 0 mas arboles?rales. Es posible utilizar el algoritmo de conversi6n analizado en la secci6n anterios, : : : J Calgunas modificaciones, para generar un arbol binario a partir de un bosque.

    Considere por ejemplo el bosque, formado por tres arboles generales, de la t.~6.16. Los pasos que se deben aplicar para lograr la conversi6n del bosque a UD.rr.;; .-binario son los siguientes:

    c D I\G

    H.r:">;/1\p/I~

    Q R1

    K L M T/\.u X

  • 5/11/2018 Estructuras de Datos - Arboles Binarios

    10/19

    1 . Enlazar en forma horizontal las raices de los distintos arboles generales.2, Relacionar los hijos de cada nodo -los hennanos- en forma horizontal.J, Enlazar en forma vertical el nodo padre con el hijo que se encuentra mas a la iz-

    quierda. Ademas, se debe eliminar el vinculo del padre con el resto de sus hijos. Rotar el diagrama resultante aproximadamente 45 grados hacia la izquierda y a sf seobtendra el arbol binario correspondiente.En la figura 6.17a se muestra el arbol luego de aplicar los tres primeros pasos. En la

    figura 6.17b se observa el arbol binario obtenido luego de que se realiza el cuarto paso.

    ~ d e u n b os qu e e n a rb ol b in ario . a ) Arb ol b ina rio lueg o de ap lica r los pasos 1 ,Arno l b ina rio luego de a plica r e l paso 4.

    A H P~ ! !B ---+ C ---+ D I ~ J Q ---+ R ~ s! ! ! lE ---+ F G K ---+ L ---+ M T

    ~a) U ---+ X

    A/'~/ -. r-.E C I P\ \ \ jF D J Q

    I I /\G K T R\ J i

    L U s\ \M X

    b)

  • 5/11/2018 Estructuras de Datos - Arboles Binarios

    11/19

    194 Capitulo 6 ARBOLES

    E jempJo 6 .5 Dado como dato el bosque de la figura 6.18a, se desea convertirlo a un arbol binarxEn la figura 6.l8b se observa una grafica deLarbol Iuego de aplicar Lostres prirneropasos. En la figura 6.18c se puede apreciar el arbol binario que se obtiene luego dese aplica el cuarto paso.

    FIG~RA6.12C on ve rs io n d e u n b os qu e e n a rb ol b in ario . a) Bosque . b) Arb ollu eg o d e a plic ar e l p rim e-r o , s e g un d o y t er ce r p a so s . c ) Arb ol b in ario lu eg o d e a plic ar e l c ua rto p as o.

    A-: '

  • 5/11/2018 Estructuras de Datos - Arboles Binarios

    12/19

    195Es de notar que para todo nodo de un arbol binario, que se obtiene a partir de un

    bosque, se cumplen los dos incisos sefialados en la conversion de un arbol general enun arbol binario.

    6 .3 .5 R ep resen aciDn de . rb Is blnarics e n memoriaLas dos maneras mas comunes de representar un arbol binario en memoria son:

    Por medio de datos tipo puntero, tambien conocidos como variables dinarnicas,z . Por medio de arreglos.

    En este libro se explicara y utilizara la primera forma, puesto que representa la masnatural para tratar una estructura de datos de este tipo.

    Al final del capitulo se presentara una breve introduccion a los arboles, desde elpunto de vista del paradigma orientado a objetos. Sin embargo, 10 que se estudiara acontinuacion sigue siendo valido para las clases, Como en las otras estructuras de datospresentadas en este libro, los conceptos explicados son los fundamentos requeridos parael uso de las mismas, independientemente del paradigma y dellenguaje utilizado parasu implementacion,

    Los nodos del arbol binario se representan como registros. Cada uno de ellos con-tiene como minima tres campos. En un campo se almacenara la informacion del nodo.Los dos restantes se utilizaran para apuntar los subarboles izquierdo y derecho, respec-tivamente, del nodo en cuesti6n.Dado el nodo T:

    T '- IZ_Q_ _j_ INFO _ DEREn el se distinguen tres campos:

    II lZQ: es el campo donde se almacena la direcci6n del subarbol izquierdo del nodeT.INFO: representa el campo donde se almacena la informacion del nodo. Normal-mente en este campo y en el transcurso de este libro se almacenara un valor simple:mimero 0 caracter, Sin embargo, en la practica es cormin almacenar en este campocualquier tipo de dato.DER: es el campo donde se almacena la direccion del subarbol derecho del nodo T.La definicion de un arbol binario en lenguaje algoritmico es como sigue:ENLACE = ANODONODO = REGISTRO

    IZQ: tipo ENLACEINFO: tipo de datoDER: tipo ENLACE

    {Fin de la definicion}

  • 5/11/2018 Estructuras de Datos - Arboles Binarios

    13/19

    196 Capitulo 6 ARBOLES

    Nota: Es importante observar que se utiliza el sfmbolo 1\ para representar el ox.""cepto de dato tipo puntero.

    E jemplo 6 .6 Considere el arbol binario de la figura 6.19a, que representa la expresi6n algebraic(A * B) + (C / D) 1\ 3.5. Su representaci6n en memoria es como la que se muestra eni,figura 6.19b.

    Note ellector que en la figura 6.19b se utiliza el termino NIL para hacer refereeczal arbol vacfo,

    FIG I! H IRe pre se nta ci6 n d e u n a rb ol b in ario e n m em oria . a ) Arb ol b in ario . b) Su rep re sen ta c i6ne n m emo ri a.

    A

    +.r:>:/~ /~

    I/\1\

    B 3.5

    C Da) [ I 1\ I , I

    I I A I I I I B I I 1 / I / I , I I I 3.5. . jo //NIL NIL NIL NIL ~ ~ NIL K : : : .

    I I c I I I I D I I.: \NIL NIL NIL NIL

    b)Como todas las estructuras de datos, los arboles tienen asociadas ciertas operacr -,

    nes. A continuaci6n se presentan los algoritrnos de algunas de estas operaciones y [~adelante, cuando se estudien otros tipos de arboles, se explicaran otras.

    6 .3 .6 O perac iones er arboles binariesUna de las operaciones basicas de un arbol binario es la creaci6n del mismo en meIIXria. Un algoritrno muy simple para fonnar un arbol, par medio de la creaci6n dinamsade nodos y la asignaci6n a estes de infonnaci6n, es el que se muestra a continuacion;

  • 5/11/2018 Estructuras de Datos - Arboles Binarios

    14/19

    G 3 , ' , , _ IlUtS ~IIIMI.. 197.\ "omnw 0 Creajirbol

    {EI algoritmo crea un arbol binario en memoria. APNODO es una variable de tipo ENLACE-puntero a un nodo--. La primera vez APNODO se crea en el programa principal}{INFO, IZQ Y DER son campos del registro NODO. INFO es de tipo caracter, IZQ y DERson de tipo puntero. Las variables RESP y OTRO son de tipo caracter y de tipo ENLACE,respectivamente }__ Leer APNODO".INFO {Lee la informacion y se guarda en el nodo}" Escribir "i,Existe nodo por izquierda: I(SI) _ O(No)?"1. Leer RESP, Si (RESP = "Sf')

    entoncesCrear(aI'RO) {Se crea un nuevo nodo}Hacer APNODO".IZQ +-afRORegresar a Crea jirbol con APNODO".IZQ {LJamada recursiva}

    si 110Hacer APNODO".IZQ +-NIL

    5 (Fin del concticional del paso 4)Escribir "l,Existe nodo por derecha: I(SI) _ O(No)?"

    7. LeerRESPI \ . . Si (RESP = "Sf')

    entoncesCrear(OTRO) {Se crea un nuevo nodo}Hacer APNODO".DER +-OTRORegresar a Creajirbol con APNODO".DER {LJamada recursiva}

    si 110Hacer APNODO".DER +- NIL

    (Fin del condicionaI del paso 8)

    Una vez que se crea el arbol binario, se pueden realizar otras operaciones sobresus elementos: recorrer todos los nodos, insertar un nuevo nodo, elirninar alguno de losexistentes 0buscar un valor determinado.

    Una de las operaciones mas importantes que se realiza en un arbol binario es el reco-rrido de los rnismos. Recorrer significa visitar los nod os del arbol en forma ordenada, detal manera que todos los nodos del rnismo sean visitados una sola vez. Existen tres for-mas diferentes de efectuar el recorrido y todas elias de naturaleza recursiva; estas son:c J Recorrido en preorden

    Visitar la rafzRecorrer el subarbol izquierdo

    Recorrer el subarbol derechoIII Recorrido en inordenI Recorrer el subarbol izquierdo

  • 5/11/2018 Estructuras de Datos - Arboles Binarios

    15/19

    198 Capitulo 6 A . R B O L E S Visitar la rafzIt Recorrer el subarbol derecho

    c! Recorrido en posordenRecorrer el subarbol izquierdoRecorrer el subarbol derechoVisitar la rafz

    En la figura 6.20 se muestran tres arboles binarios con el resultado que se 0 b U = . : -al efectuar los diferentes tipos de recorrido. En este ejemplo, la visita del nodo imI::la impresion de su contenido.

    Note que en un arbol binario que representa una expresi6n algebraica, por e~plo, el arbol de la figura 6.20c, la impresion de la informacion de sus nodos, usance recorrido preorden, produce la notacion polaca prefija. En el caso del recorrido inorcese obtiene la notaci6n convencional y, por ultimo, el recorrido posorden produce 1 2 1 0- taci6n polaca posfija. Aunque, cabe ac1arar, sin los parentesis respectivos que indices 'precedencia de los distintos operadores.

    F G U rtA '.20 PREORDEN:AB DEC FGINORDEN: DB EA FCGPOSORDEN: DE B FG CA

    Arboles binarios y su sr eco r r i dos ,

    C

    D E Ga)

    D

    A.r >:/~

    1\

    PREORDEN:A B D GKC EH t:INORDEN: GKDBA H EIC F."POSORDEN: KG DB H I EJ rcC

    F

    j \G I J\ b )

    K

  • 5/11/2018 Estructuras de Datos - Arboles Binarios

    16/19

    63 199

    PREORDEN: + *A B"IC D 3.5INORDEN: A * B +/ D" 3.5POSORDEN: A B * C D13.5 "+* "/~

    f\ 3.5BC [J

    c)

    Se analizan a continuaci6n los algoritmos que efectuan los diferentes tipos de reco-rridos en un arbol binario.Algoritrno n _ Preorden

    {Este algoritmo realiza el recorrido preorden de un arbol binario. APNODO es un dato de tipoENLACE -puntero a un nodo-}{INFO, IZQ YDER son campos del registro nodo. INFO es una variable de tipo caracter, IZQy DER son variables de tipo puntero)I _ Si (APNODO .. NIL) entonces

    Visitar el APNODO {Escribir NODO".INFO}Regresar a Preorden con APNODO".IZQ{Llamada recursiva a Preorden con la rama izquiercla del nodo en cuesti6n}Regresar a Preorden con APNODO".DER{Llamada recursiva a Preorden con la rama derecha del nodo en cuesti6n}

    , {Fin del condicional del paso I}

    Nota: Cabe destacar que el termino visitar se puede reemplazar por cualquier otrainstrucci6n valida, por ejemplo escribir, sumar 0 comparar la informaci6n del nodo.Note que esta aclaraci6n se apJica tambien para los otros tipos de recorridos.En la siguiente tabla se presentan los pasos necesarios para obtener el recorrido preor-den del arbol binario de la figura 6.20 a), utilizando el algoritmo 6.2.

    En la columna Pita: rama pendiente de visitar, la Hamada (N) indica el orden enel cual las ramas pendientes de visitar se introdujeron en la pila. En la columna Nodoactualla Hamada (N) sefiala la rama que se extrajo de la pila. Observe ellector que elorden en que los nodos se visitaron es:

    A-B-D-E-C-E-G

  • 5/11/2018 Estructuras de Datos - Arboles Binarios

    17/19

    200 Capftulo 6 ARBOLES

    Re co r ri d o p r eo r de nA A A''.IZQ -+B A".DER -+ C (1)

    2 B B B".IZQ-+D B".DER -+E (2)3 D D D" .IZQ -+NIL DII.DER -+ NIL (3)4 NILS (3) NIL6 (2) E E E".IZQ _,.NIL E".DER --+ NIL (4)7 NIL8 (4) NIL9 (l)C C C".IZQ-F C".DER - G (5)10 F F F-'.IZQ -+NIL F".DER - NIL (6)11 NIL12 (6) NIL13 (5) G G GA.IZQ --+ NIL GA.DER - NIL (7)14 NIL15 (7) NIL

    EJemplo 6 .8

    \' gori rrno f l . ' : > Inorden

    (Este algoritmo realiza el recorrido inorden de un arbol binario, APNODO es un registro c,tipo ENLACE-puntero a un nodo-){INFO, IZQ YDER son campos del registro nodo.INFO es una variable de tipo caracter, fAy DER son variables de tipo puntero}f. Si (APNOJ!)O pO NIL) entonces

    Regresar a Inorden eon APNOIDOII JZQ[Llamada recursiva a Inorden eon la rama izquserda del nodo en cuesti6n}Visitar elAPNODO [Escribir APNODO".INFO}Regresar a Inorden can APNODO".DER{LJamada recursiva a. Inorden can la rama derecha del nodo en cuestion}

    2. {Fin del condicional del paso l.}

    En la tabla 6.4 se muestra la generaci6n del recorrido inorden del arbol de la fi~6.20a, usando el aigoritmo 6.3.

  • 5/11/2018 Estructuras de Datos - Arboles Binarios

    18/19

    201

    i no rdenA A".lZQ --+ B

    2 B B".IZQ-D

    3 D D".lZQ - NIL4 NIL D(6)5 (5) NIL B (4)6 (3) E E".lZQ --+ NIL7 NIL E (8)8 (7) NIL A (2)9 (1) C C".lZQ --+ F10 F F".lZQ --+ NILII NIL F (12)12 (ll) NIL C (10)13 (9) G G".lZQ - NIL14 NIL G(14)15 (13) NIL

    A".DER --+ C (1)A (2)8".DER-E (3)B (4)D".DER-NIL (5)D (6)

    E".lZQ --+NIL (7)E (8)

    C".DER --+G (9)C (10)F".DER - NIL (11)F (12)

    G".DER - NIL (13)G (14)

    En la columna Pila: rama pendiente de visitar, la Hamada (N) indica el orden en elcuallas ramas pendientes de visitar fueron introducidas a la pila. En las columnas Nodoactual y Nodo visitado, las llamadas (N) indican las instrucciones que se extrajeron dela pila. Note que esta observaci6n tambien es valida para la tabla 6.5.

    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. APNODO es un dato de tipoENLACE -puntero a un nodo--}{INFO, IZQ y DER son campos del registro nodo. INFO es una variable de tipo caracter, IZQy DER son variables de tipo puntero}

  • 5/11/2018 Estructuras de Datos - Arboles Binarios

    19/19

    202 Capitulo6

    E jemp l'o 6 .,9

    ARBOLES

    t , Si (APNOPO .. NIL) entoncesRegresar a Posorden con APNODOII.IZQ{Llamada recursiva a Posorden con la rama izquierda del nodo en cuesti6n}Regresar a Posorden con APNODOII.DER{Llamada recursiva a Posorden con la rama derecha del nodo en cuesti6n}Visitar clAPNODO (Escribir APNODOIl.INFO)

    (Fin del condicional del paso 1)

    En la tabla 6.5 se presentan los pasos necesarios que se siguieron para efectuar eJrrido posorden del arbol de la figura 6.20a, aplicando el algoritmo anterior.

    T A a l , . < \ U-Re co r ri do p o so rd e n

    A AII.lZQ --+ B A mA".DER~ C m

    2 B B"-.IZQ --+ D B (3)B".DER~E (4)

    3 D DII.lZQ ---+ NIL D (5)DII.DER---+NIL (6)

    4 NIL5 (6) NIL D (5)6 (4) E I'.IZQ ---+ NIL E (7)

    EII.DER ---+ NIL (8)7 NIL8 (8) NIL E (7)9 B (3)10 (2) C C".IZQ-F C (9)

    C".DER --+ G (10)11 F F".IZQ ---+NIL F (II)

    F".DER---+ NIL (12)12 NIL13 (12) NIL F (11)14 (10) G GA_iZQ~NIL G (13)

    G'\DER~NIL (14)15 NIL16 (14) NlL G(]3)17 C (9)18 A (1)