38
Tema 09: TAD Árbol binario Estructuras de datos (Prof. Edgardo A. Franco) 1 M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom

Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

  • Upload
    doanbao

  • View
    218

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

Tema 09: TAD Árbol binario

Estructuras de datos (Prof. Edgardo A. Franco)

1M. en C. Edgardo Adrián Franco Martínez http://[email protected]

@edfrancom edgardoadrianfrancom

Page 2: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

Contenido• Introducción

• El árbol binario

• Definición recursiva del árbol binario

• Especificación del TAD árbol binario

• Cabecera

• Definición

• Operaciones

• Observaciones

• Conversión de arboles generales a binarios

• Representación de árboles binarios en memoria

• Recorrido en árboles binarios• Preorden

• Inorden

• postorden

• Recursividad en los recorridos

Árbol Binario I (Edgardo A. Franco)

Estr

uct

ura

s d

e d

ato

s0

9 T

AD

Árb

ol b

inar

ioP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

2

Page 3: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

Introducción• Los árboles binarios representan las estructuras de

datos no lineales y dinámicas más utilizadascuando de árboles se habla en computación.

• Un árbol binario es una estructura de datos en lacual cada nodo siempre tiene un hijo izquierdo y unhijo derecho.

• No pueden tener más de dos hijos (de ahí elnombre "binario").

Estr

uct

ura

s d

e d

ato

s0

9 T

AD

Árb

ol b

inar

ioP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

3

Page 4: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

El árbol binario Un árbol binario es una estructura de datos de tipo

árbol en donde cada uno de los nodos del árbolpuede tener 0, 1, ó 2 subárboles llamados deacuerdo a su caso como:

Si el nodo raíz tiene 0 relaciones se llama hoja.

Si el nodo raíz tiene 1 relación a la izquierda, el segundoelemento de la relación es el subárbol izquierdo.

Si el nodo raíz tiene 1 relación a la derecha, el segundoelemento de la relación es el subárbol derecho.

Estr

uct

ura

s d

e d

ato

s0

9 T

AD

Árb

ol b

inar

ioP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

4

Page 5: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

Un árbol binario A es un conjunto deelementos del mismo tipo tal que:

O bien es el conjunto vacío, en cuyo caso se le denominaárbol vacío.

O bien no es vacío, en cuyo caso existe un elementodistinguido llamado raíz, y el resto de los elementos sedistribuyen en dos subconjuntos disjuntos A1, A2, cadauno de los cuales es un árbol binario, llamadosrespectivamente subárboles izquierdo y derecho del árboloriginal

No es lo mismo un árbol 2-ario que un árbol binario, yaque en el árbol binario se distingue entre subárbolesizquierdo y derecho. Los términos padre e hijo descritospara árboles n-arios son también utilizados para árbolesbinarios.

Estr

uct

ura

s d

e d

ato

s0

9 T

AD

Árb

ol b

inar

ioP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

5

Page 6: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

El árbol binario• El árbol binario es un tipo especial de

árbol en donde:

• Cada nodo no puede tener mas de dos hijos

• Un árbol binario puede ser un conjunto

• Vacío, no tiene ningún nodo

• O constar de tres partes:

• Un nodo raíz y

• Dos subárboles binarios: izquierdo y

derecho

• La definición de un árbol binario es

recursiva

• La definición global depende de si misma

A

B C

D

A

B C

D E

H I

F G

J

RAIZ

Sub. Izq. Sub. Der.

Estr

uct

ura

s d

e d

ato

s0

9 T

AD

Árb

ol b

inar

ioP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

6

Page 7: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

Definición recursiva del árbol binario• La definición del árbol es recursiva

• Se basa en si misma

• La terminología de los árboles• También puede ser definida en forma recursiva

• Ejemplo: NIVEL DE UN ÁRBOL• Identificar el caso recursivo y el caso mas básico

Anivel 1

Caso Básico

Un árbol con un solo nodo tiene nivel 1

Caso Recursivo

Si tiene mas de un nodo, el nivel es:1 + MAX(Nivel(SubIzq), Nivel(SubDer))

S. izq.

Nivel 1

S. der.

Nivel 1

A

B C

Nivel Del Arbol: 2

SUB. IZQ.

Nivel = 1 + Max(Sub.Izq,0)

SUB. DER.

Nivel 1

SUB. IZQ.

Nivel = 1 + Max(0,Sub.Der.)

SUB. DER..

Nivel = 1

SUB. IZQ.

Nivel = 1 + Max(0,1)

A

B C

D

E

SUB. IZQ.

Nivel = 1 + Max(2,0)

NIVEL : 1 + MAX(S.IZQ, S.DER)NIVEL : 1 + MAX(3, 1)NIVEL : 4

SUB. IZQ.

Nivel = 1 +

Max(3,Sub.Der.)

Estr

uct

ura

s d

e d

ato

s0

9 T

AD

Árb

ol b

inar

ioP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

7

Page 8: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

Arboles binarios llenos• Un árbol de altura h, esta lleno si

• Todas sus hojas están en el nivel h.

• Los nodos de altura menor a h tienen siempre 2 hijos.

• Recursiva

• Si T esta vacío• Entonces T es un árbol binario lleno de altura 0

• Si no esta vacío, y tiene h>0• Esta lleno si los subárboles de la raíz, son ambos árboles binarios

llenos de altura h-1

Estr

uct

ura

s d

e d

ato

s0

9 T

AD

Árb

ol b

inar

ioP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

8

Page 9: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

Arboles binarios completos

• Un árbol de altura h esta completo si

• Todos los nodos hasta el nivel h-2 tienen

dos hijos cada uno y

• En el nivel h-1, si un nodo tiene un hijo

derecho, todas las hojas de su subárbol

izquierdo están a nivel h

• Si un árbol esta lleno, también esta

completo

"Los elementos del último nivel están colocados de izquierda a derecha sin dejar huecos entre ellos."

Estr

uct

ura

s d

e d

ato

s0

9 T

AD

Árb

ol b

inar

ioP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

9

Page 10: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

Arboles binarios equilibrados• Un árbol binario equilibrado es cuando

• La diferencia de altura entre los subárboles de cualquier

nodo es máximo 1

• Un árbol binario equilibrado totalmente

• Los subárboles izquierdo y derecho de cada nodo tienen

las misma altura: es un árbol lleno

• Un árbol binario completo es equilibrado

• Un árbol binario lleno es totalmente equilibrado

Estr

uct

ura

s d

e d

ato

s0

9 T

AD

Árb

ol b

inar

ioP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

10

Page 11: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

Especificación del TDA Árbol binarioCabecera• Nombre: Árbol binario (Binary Tree)

• Lista de operaciones:

• Operaciones de construcción• Inicializar (Initialize): Recibe un árbol A y lo inicializa para su trabajo

normal.

• Eliminar (Destroy): Recibe una un árbol A y lo libera completamente.

• Operaciones de posicionamiento y búsqueda• Raíz (Root): Recibe un árbol A y devuelve la posición de la raíz.

• Padre (Parent): Recibe un árbol A y una posición p, devuelve la posición

de padre de p.

• Hijo derecho (Right Son): Recibe un árbol A y una posición p, devuelve

la posición del hijo derecho de p.

• Hijo izquierdo (Left Son): Recibe un árbol A y una posición p, devuelve

la posición del hijo izquierdo de p.

Estr

uct

ura

s d

e d

ato

s0

9 T

AD

Árb

ol b

inar

ioP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

11

Page 12: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

• Buscar (Search): Recibe un árbol A y un elemento e, devuelve la posición del elemento en el árbol A.

• Operaciones de consulta• Vacía (Empty): Recibe un árbol A y devuelve verdadero en caso de que

el árbol A este vacío.

• Nodo Nulo (Null Node): Recibe un árbol A y una posición p, devuelve

verdadero si la posición p del árbol A es nula o incorrecta.

• Leer nodo (Read Node): Recibe un árbol A y una posición p, devuelve el

elemento contenido en el nodo con posición p del árbol A.

• Operaciones de modificación• Nuevo Hijo Derecho (New Right Son): Recibe un árbol A, una posición

p y un elemento e, se añade a e como hijo derecho del nodo con posición

p.

• Nuevo Hijo Izquierdo (New Left Son): Recibe un árbol A, una posición p

y un elemento e, se añade a e como hijo izquierdo del nodo con posición

p.

Estr

uct

ura

s d

e d

ato

s0

9 T

AD

Árb

ol b

inar

ioP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

12

Page 13: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

• Eliminar Hijo Derecho (Delete Right Son): Recibe un árbol A y una

posición p, se elimina al hijo derecho y todos sus descendientes, del nodo

con posición p.

• Eliminar Hijo Izquierdo (Delete Left Son): Recibe un árbol A y una

posición p, se elimina al hijo izquierdo y todos sus descendientes, del

nodo con posición p.

• Eliminar Nodo(Delete Node): Recibe un árbol A y una posición p, se

elimina al nodo con posición p y todos sus descendientes.

• Remplazar Nodo (Replace Node): Recibe un árbol A, una posición p y

un elemento e, se remplaza a e del nodo con posición p en A.

Estr

uct

ura

s d

e d

ato

s0

9 T

AD

Árb

ol b

inar

ioP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

13

Page 14: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

Descripción• Un árbol binario de tipo T es una estructura homogénea, resultado

de la concatenación de un elemento de tipo T, llamado raíz, condos arboles binarios disjuntos, llamados subárbol izquierdo ysubárbol derecho. Un árbol binario especial es el árbol binariovacio.

• Los valores del TAD ArbolBinario son arboles binarios donde cadanodo contiene un dato del tipo Elemento. Las posiciones de losnodos en el árbol son del tipo Posición. Los árboles son mutables:Nuevo Hijo Derecho , Nuevo Hijo Izquierdo, Eliminar HijoDerecho, Eliminar Hijo Izquierdo y Eliminar Nodo y RemplazarNodo añaden, eliminan y modifican respectivamente elementos yla estructura de un árbol.

Estr

uct

ura

s d

e d

ato

s0

9 T

AD

Árb

ol b

inar

ioP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

14

Page 15: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

Operaciones

• Inicializar (Initialize): recibe<-árbol(A);

• Initialize (A)

• Efecto: Recibe un árbol binario A y lo inicializa para su trabajo normal.

• Eliminar (Destroy):recibe<-árbol(A);

• Destroy (A)

• Efecto: Recibe un árbol binario A y lo libera completamente.

• Raíz (Root):recibe<-árbol(A); retorna -> posición

• Root (A)

• Efecto: Recibe un árbol binario A y retorna la posición de la raíz de A, si el árbol es vacío devuelve una posición nula.

Estr

uct

ura

s d

e d

ato

s0

9 T

AD

Árb

ol b

inar

ioP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

15

Page 16: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

• Padre (Parent):recibe<-árbol(A), posición(P); retorna -> posición

• Parent(A,P)

• Efecto: Recibe un árbol binario A y una posición P, devuelve la

posición de padre de p.

• Requerimientos: El árbol binario A es no vacío y la posición P es una posición valida. Si P es la raíz se devuelve una posición nula.

• Hijo derecho (Right Son):recibe<-árbol(A), posición(P);

retorna -> posición

• RightSon(A,P)

• Efecto: Recibe un árbol binario A y una posición P, devuelve la

posición del hijo derecho de p.

• Requerimientos: El árbol binario A es no vacío y la posición P es una posición valida. Si P no tiene hijo derecho devuelve una posición nula.

Estr

uct

ura

s d

e d

ato

s0

9 T

AD

Árb

ol b

inar

ioP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

16

Page 17: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

• Hijo izquierdo (LeftSon):recibe<-árbol(A), posición(P);

retorna -> posición

• LeftSon(A,P)

• Efecto: Recibe un árbol binario A y una posición P, devuelve la

posición del hijo izquierdo de p.

• Requerimientos: El árbol A es no vacío y la posición P es una posición valida. Si P no tiene hijo izquierdo devuelve una posición nula.

• Buscar (Search):recibe<-árbol(A), elemento (E); retorna ->

posición

• Search(A,E)

• Efecto: Recibe un árbol binario A y un elemento E, devuelve la

posición del elemento E en el árbol A.

• Requerimientos: El árbol binario A es no vacío y la posición P es una posición valida. Si E no es encontrado devuelve una posición nula.

Estr

uct

ura

s d

e d

ato

s0

9 T

AD

Árb

ol b

inar

ioP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

17

Page 18: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

• Vacia (Empty):recibe<-árbol(A); retorna -> booleano

• Empty(A)

• Efecto: Recibe un árbol binario A y devuelve verdadero en caso de

que el árbol A este vacío, devuelve falso en caso contrario.

• Nodo Nulo (Null Node):recibe<-árbol(A), posición (P); retorna

-> booleano

• NullNode(A,P)

• Efecto: Recibe un árbol binario A y una posición P, devuelve

verdadero si la posición P del árbol A es nula o incorrecta y devuelve falso en caso contrario.

Estr

uct

ura

s d

e d

ato

s0

9 T

AD

Árb

ol b

inar

ioP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

18

Page 19: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

• Leer Nodo(Read Node):recibe<-árbol(A), posición (P);

retorna -> elemento

• ReadNode(A,P)

• Efecto: Recibe un árbol binario A y una posición P, devuelve el

elemento en la posición P del árbol A.

• Requerimientos: El árbol A es no vacío y la posición P es una posición valida..

• Nuevo Hijo Derecho(New Right Son):recibe<-árbol(A),

posición (P), elemento E;

• NewRightSon(A,P,E)

• Efecto: Recibe un árbol binario A, una posición P y un elemento E, se

añade un nodo que contenga E como hijo derecho del nodo con posición P.

• Requerimientos: El árbol binario A es no vacío y la posición P es una posición valida. Si el árbol A es vacío se agrega a un nodo raíz con E. si P ya tiene un hijo derecho, se cancela la operación.

Estr

uct

ura

s d

e d

ato

s0

9 T

AD

Árb

ol b

inar

ioP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

19

Page 20: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

• Nuevo Hijo Izquierdo(New Left Son):recibe<-árbol(A),

posición (P), elemento E;

• NewLeftSon(A,P,E)

• Efecto: Recibe un árbol binario A, una posición P y un elemento E, se

añade un nodo que contenga E como hijo izquierdo del nodo con posición P.

• Requerimientos: El árbol binario A es no vacío y la posición P es una posición valida. Si el árbol A es vacío se agrega a un nodo raíz con E; si P ya tiene un hijo Izquierdo, se cancela la operación.

• Eliminar Hijo Derecho (Delete Right Son):recibe<-

árbol(A), posición (P);

• DeleteRightSon(A,P)

• Efecto: Recibe un árbol binario A y una posición se elimina al hijo

derecho y todos sus descendientes del nodo con posición P.

• Requerimientos: El árbol A es no vacío y la posición P es una posición valida y tiene un hijo derecho.

Estr

uct

ura

s d

e d

ato

s0

9 T

AD

Árb

ol b

inar

ioP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

20

Page 21: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

• Eliminar Hijo Izquierdo(Delete Left Son):recibe<-

árbol(A), posición (P);

• DeleteLeftSon(A,P)

• Efecto: Recibe un árbol binario A y una posición se elimina al hijo

izquierdo y todos sus descendientes del nodo con posición P.

• Requerimientos: El árbol A es no vacío y la posición P es una posición valida y tiene un hijo izquierdo.

• Eliminar Nodo(Delete Node):recibe<-árbol(A), posición (P);

• DeleteNode(A,P)

• Efecto: Recibe un árbol binario A y una posición P, se elimina al nodo con posición P y todos sus descendientes.

• Requerimientos: El árbol A es no vacío y la posición P es una posición valida.

Estr

uct

ura

s d

e d

ato

s0

9 T

AD

Árb

ol b

inar

ioP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

21

Page 22: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

• Remplazar Nodo(Replace Node):recibe<-árbol(A),

posición (P), elemento (E);

• ReplaceNode(A,P)

• Efecto: Recibe un árbol binario A, una posición P y un elemento E,

se remplaza a E del nodo con posición P en A.• Requerimientos: El árbol binario A es no vacío y la posición P es una

posición valida.

Estr

uct

ura

s d

e d

ato

s0

9 T

AD

Árb

ol b

inar

ioP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

22

Page 23: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

Observaciones• Dos árboles binarios son distintos cuando sus estructuras

(la distribución de los arcos) son diferentes.

• Dos árboles son similares cuando sus estructuras sonidénticas, pero la información que contienen sus nodosdifiere entre si.

• Dos árboles binarios equivalente son aquellos que sonsimilares y además los nodos contienen la mismainformación.

Estr

uct

ura

s d

e d

ato

s0

9 T

AD

Árb

ol b

inar

ioP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

23

Page 24: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

• Se define un árbol binario completo como un árbol en el

que todos sus nodos, excepto los del ultimo nivel, tienen

dos hijos: el subárbol izquierdo y el subárbol derecho.

• Recorrer un árbol significa visitar sus nodos, ya sea para

consultar la información de cada uno o buscar alguno de

estos para su modificación o eliminación.

Estr

uct

ura

s d

e d

ato

s0

9 T

AD

Árb

ol b

inar

ioP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

24

Page 25: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

• Los árboles binarios, se aplican en la solución de muchos

problemas. Además, su uso se ve favorecido por su

dinámica, la no linealidad entre sus elementos y por su

sencilla programación. Por lo tanto resulta útil poder

convertir árboles generales, con 0 a n hijos, en árboles

binarios.

Árbol Binario I (Edgardo A. Franco)

Estr

uct

ura

s d

e d

ato

s0

9 T

AD

Árb

ol b

inar

ioP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

25

Page 26: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

1. Enlazar los hijos del nodo en forma horizontal

(Los hermanos)

2. Relacionar en forma vertical el nodo padre con el

hijo que se encuentra mas a la izquierda. Además

se debe eliminar el vinculo de ese padre con el

resto de sus hijos.

3. Rotar el diagrama resultante, aproximadamente

45 grados en sentido horario, y así se obtendrá el

árbol binario correspondiente.

Árbol Binario I (Edgardo A. Franco)

Estr

uct

ura

s d

e d

ato

s0

9 T

AD

Árb

ol b

inar

ioP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

26

Page 27: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

A

B DC

E F G H I J K

L MN

O

A

M

B C D

FE G IH KJ

ONL

=

que da así

O

A

M

BC

DF

E

G

IH

KJN

L

Estr

uct

ura

s d

e d

ato

s0

9 T

AD

Árb

ol b

inar

ioP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

27

Page 28: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

Árbol Binario I (Edgardo A. Franco)

Estr

uct

ura

s d

e d

ato

s0

9 T

AD

Árb

ol b

inar

ioP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

28

Page 29: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

• Las dos maneras más comunes de representar un

árbol binario en memoria son:

1. Por medio de datos tipo puntero

2. Por medio de arreglos (Dinámicos)

• Los nodos del árbol binario se representan como

bloques de memoria, cada uno de ellos con tres

campos. En uno se almacenará la información del

nodo. Los dos restantes se utilizarán para apuntar

los subárboles izquierdo y derecho,

respectivamente, del nodo en cuestión.

Árbol Binario I (Edgardo A. Franco)

Estr

uct

ura

s d

e d

ato

s0

9 T

AD

Árb

ol b

inar

ioP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

29

Page 30: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

Árbol Binario I (Edgardo A. Franco)

Cada nodo tiene la siguiente forma:

Raíz

R

A

B C

D

E

Estr

uct

ura

s d

e d

ato

s0

9 T

AD

Árb

ol b

inar

ioP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

30

Page 31: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

• Izq: Es el campo donde se almacena la dirección del

subárbol izquierdo del nodo.

• e: Representa el campo donde se almacena el elemento

que almacena el nodo (información).

• Der: Es el campo donde se almacena la dirección del

subárbol derecho del nodo.

Árbol Binario I (Edgardo A. Franco)

//Estructura en C para representar un nodo de un árbol binario

typedef struct nodo

{

//Apuntador al hijo izquierdo

struct nodo *izq;

//Información (elemento)

elemento e;

//Apuntador al hijo derecho

struct nodo *der;

}nodo;

Estr

uct

ura

s d

e d

ato

s0

9 T

AD

Árb

ol b

inar

ioP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

31

Page 32: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

• Recorrer un árbol significa visitar los nodos del árbolen forma ordenada, de tal manera que todos losnodos del mismo sean visitados una sola vez.

• Para árboles binarios, se definen los recorridos enpreorden, inorden y postorden.

Árbol Binario I (Edgardo A. Franco)

Estr

uct

ura

s d

e d

ato

s0

9 T

AD

Árb

ol b

inar

ioP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

32

A

B C

D E F

H IG

Preorden = A B D G C E H I F

Inorden= D G B A H E I C F

Postorden= G D B H I E F C A

Page 33: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

• Recorrido en preorden

• Visitar la raíz

• Recorrer el subárbol izquierdo

• Recorrer el subárbol derecho

• Recorrido en inorden

• Recorrer el subárbol izquierdo

• Visitar la raíz

• Recorrer el subárbol derecho

• Recorrido en postorden

• Recorrer el subárbol izquierdo

• Recorrer el subárbol derecho

• Visitar la raíz

Árbol Binario I (Edgardo A. Franco)

Estr

uct

ura

s d

e d

ato

s0

9 T

AD

Árb

ol b

inar

ioP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

33

Page 34: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

Árbol Binario I (Edgardo A. Franco)

A

B C

D E F

H IG

Preorden = A B D G C E H I F

Inorden= D G B A H E I C F

Postorden= G D B H I E F C A Estr

uct

ura

s d

e d

ato

s0

9 T

AD

Árb

ol b

inar

ioP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

34

Page 35: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

PreOrden: N E D B K H M S R Q W V T Z

RaizN

MHB

KD

E S

R

Q

W

ZV

T

Recorrido Preorden

Árbol Binario I (Edgardo A. Franco)

Estr

uct

ura

s d

e d

ato

s0

9 T

AD

Árb

ol b

inar

ioP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

35

Page 36: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

InOrden: B D E H K M N Q R S T V W Z

RaizN

MHB

KD

E S

R

Q

W

ZV

T

Recorrido Inorden

Árbol Binario I (Edgardo A. Franco)

Estr

uct

ura

s d

e d

ato

s0

9 T

AD

Árb

ol b

inar

ioP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

36

Page 37: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

Postorden: B D H M K E Q R T V Z W S N

Raiz

N

MHB

KD

E S

R

Q

W

ZV

T

Recorrido en Postorden

Árbol Binario I (Edgardo A. Franco)

Estr

uct

ura

s d

e d

ato

s0

9 T

AD

Árb

ol b

inar

ioP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

37

Page 38: Clase 30: TAD Árbol binario - Web personal de Edgardo ... · • Representación de árboles binarios en memoria ... •Los subárboles izquierdo y derecho de cada nodo tienen

Recursividad en los recorridos

GG-DG-D-BG-D-B-AG-D-B-A-CG-D-B-A-C-E

G

D K

B E H M

A C F J

I

L

G

1

D

2

B

3

A

4

C

5

E

6

F

7

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

K

8

G-D-B-A-C-E-F-K

H

9

G-D-B-A-C-E-F-K-H

J

10

G-D-B-A-C-E-F-K-H-J

I

11

G-D-B-A-C-E-F-K-H-J-I

M

12

G-D-B-A-C-E-F-K-H-J-I-M

L

13

G-D-B-A-C-E-F-K-H-J-I-M-L

1. Visitar raiz2. Preorden al Subarbol Izq.3. Preorden al Subarbol Der.

Árbol Binario I (Edgardo A. Franco)

Ejemplo:recorrido en preorden

Estr

uct

ura

s d

e d

ato

s0

9 T

AD

Árb

ol b

inar

ioP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

38