Arboles Binarios Grales AyED 2011

46
 Algoritmos Algoritmos y Estructuras de Datos Estructuras de Datos  ursa a Prof. Catalina Mostaccio Prof. Alejandra Schiavoni Facul tad de Informáti ca - UNLP 

Transcript of Arboles Binarios Grales AyED 2011

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 1/46

Algoritmos Algoritmos 

y y Estructuras de Datos Estructuras de Datos 

 ursa a

Prof. Catalina Mostaccio 

Prof. Alejandra Schiavoni 

Facultad de Informática - UNLP 

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 2/46

Árboles Binarios

2Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 3/46

Agenda DefiniciónDefinición

Descripción y terminologíaDescripción y terminología

RecorridosRecorridos

Tiempo de ejecución de los recorridosTiempo de ejecución de los recorridos Aplicación: Arboles de expresiónAplicación: Arboles de expresión

3Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 4/46

Árbol Binario: Definición

Un árbol binario es una colección de nodos,tal que:

• puede estar vacía• puede estar formada por un nodo distinguido R,

llamado raíz y dos sub-árboles T 1 y T 2 , donde la

raíz de cada subárbol T i está conectado a R por medio de una arista

4Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 5/46

Descripción y terminología

Cada nodo puede tener a lo sumo dos nodoshijos.

Cuando un nodo no tiene ningún hijo sedenomina hoja.

Los nodos que tienen el mismo nodo padre sedenominan hermanos.

5Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 6/46

Descripción y terminología Conceptos a usar:

• Camino: desde n1 hasta nk, es una secuencia denodos n1, n2, ….,nk tal que ni es el padre de ni+1,para 1 ≤ i < k. La longitud del camino es el número

de aristas, es decir k-1. Existe un camino delongitud cero desde cada nodo a sí mismo. Existeun único camino desde la raíz a cada nodo.

• Profundidad : d e ni es la longitud del único caminodesde la raíz hasta ni. La raíz tiene profundidadcero.

6Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 7/46

Descripción y terminología• Grado de n

ies el número de hijos del nodo n

i.

• Altura de ni es la longitud del camino más largodesde ni hasta una hoja. Las hojas tienen altura

.raíz.

• Ancestro/Descendiente: si existe un camino desden

1a n

2, se dice que n

1es ancestro de n

2y n

2es

descendiente de n1.

7Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 8/46

Descripción y terminología• Árbol  binario lleno: Dado un árbol binario T y

altura h, diremos que T es lleno si cada nodo internotiene grado 2 y todas las hojas están en el mismoni el h

Es decir, recursivamente, T es lleno si :1.- T es un nodo simple ( árbol binario lleno dealtura 0), o

2.- T es de altura h y sus sub-árboles son llenos dealtura h-1.

8Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 9/46

Descripción y terminología• Árbol  binario completo: Dado un árbol binario T y

altura h, diremos que T es completo si es lleno dealtura h-1 y el nivel h se completa de izquierda aderecha.

• e o os e o o e o:

Sea T un árbol binario lleno de altura h, la cantidadde nodos N es (2 h+1 – 1)

• Cantidad de nodos en un árbol  binario completo:Sea T un árbol binario completo de altura h, lacantidad de nodos N varía entre (2 h ) y ( 2 h+1 – 1)

9Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 10/46

RepresentaciónRepresentación Hijo Izquierdo Hijo Izquierdo -- Hijo Derecho Hijo Derecho Cada nodo tiene:

• Información propia del nodo

 • e erenc a a su o zqu er o• Referencia a su hijo derecho

Puede implementarse a través de:• Arreglos• Punteros

10Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 11/46

RepresentaciónRepresentación Hijo Izquierdo Hijo Izquierdo -- Hijo Derecho Hijo Derecho

A

CB

A

B C

DE

G H

H

E

D

G

11Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 12/46

RecorridosRecorridos Preorden

• Se procesa primero la raíz y luego sus hijos, izquierdo y derecho.

Inorden• Se procesa el hijo izquierdo, luego la raíz y último el hijo derecho

Postorden• Se procesan primero los hijos, izquierdo y derecho, y luego la raíz

Por niveles• Se procesan los nodos teniendo en cuenta sus niveles, primero laraíz, luego los hijos, los hijos de éstos, etc.

12Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 13/46

RecorridoRecorrido:: PreordenPreordenpublic void  preorden() {

imprimir (this.getRaiz().getDato());

if(!this.getHijoIzquierdo().esVacio()){

s.ge o zqu er o.preor en ;

}

if(!this.getHijoDerecho().esVacio()){

this.getHijoDerecho.preorden();

}

}

13Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 14/46

RecorridoRecorrido PreordenPreorden:: TiempoTiempo dedeEjecuciónEjecución

Considerando un árbol binario lleno y altura h 

c n = 1T(n) = 

c +  2 T( (n – 1) / 2 ) n >1

T(n) es O(n)

14Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 15/46

RecorridoRecorrido PreordenPreorden:: TiempoTiempo dedeEjecuciónEjecución

Otra forma: expresando en función de la altura

c h = 0 T(h) = 

c +  2 T( h – 1 ) h >0 

T(n) es O(n)15Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 16/46

RecorridoRecorrido:: PorPor nivelesnivelespublic void porNiveles() {

Cola q = new Cola();ArbolBinario arbol;

q.encolar(this);

while ! .esVacia

Algoritmos y Estructuras de Datos 16

 

arbol = q.desencolar();imprimir arbol.getRaiz().getDato();

if (!arbol.getHijoIzquierdo().esVacio()){

q.encolar(arbol.getHijoIzquierdo());

if (!arbol.getHijoDerecho().esVacio()){

q.encolar(arbol.getHijoDerecho());

}

}

16Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 17/46

Árbol de Expresión

Es un árbol binario asociado a unaexpresión aritmética

Algoritmos y Estructuras de Datos 17

Nodos internos representan operadores

Nodos externos (hojas) representanoperandos

17Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 18/46

Árbol de Expresión

Ejemplo:  / 

Algoritmos y Estructuras de Datos 18

+

a b

-

c d

+e f 

*

18Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 19/46

Árbol de Expresión

Recorriendo el árbol, obtenemos:

 

Algoritmos y Estructuras de Datos 19

nor en: a + c – e +Preorden: /*+ab-cd+ef 

Postorden: ab+cd-*ef+/ 

19Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 20/46

Construcción de un árbol de expresión

A partir de una:

 

Algoritmos y Estructuras de Datos 20

 

Expresión prefija

Expresión infija

-

+2

5*

43

20Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 21/46

Construcción de un árbol de expresión apartir de una expresión postfija

Algoritmo: tomar un carácter de la expresión mientras ( existe carácter ) hacer 

si es un operando   creo un nodo y lo apilo.si es un o erador lo tomo como la raíz de los dos 

Algoritmos y Estructuras de Datos 21

 

últimos nodos creados)  - creo un nodo R,- desapilo y lo pongo como hijo derecho de R - desapilo y lo pongo como hijo izquierdo de R - apilo R.

tomo otro carácter fin 

21Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 22/46

Construcción de un árbol de expresión apartir de una expresión prefija

Algoritmo: ArbolExpresión (A: ArbolBin, exp: string )

 

Algoritmos y Estructuras de Datos 22

.

si es un operador   - creo un nodo raíz R - ArbolExpresión (subArbIzq de R, exp 

(sin 1°   carácter) )- ArbolExpresión ( subArbDer de R, exp 

(sin 1°   carácter) )si es un operando  creo un nodo (hoja)

22Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 23/46

Construcción de un árbol de expresión apartir de una expresión infija

Expresión infija Se usa una pila y se tiene en cuenta la precedencia de los o eradores 

2+5*3+1

Algoritmos y Estructuras de Datos 23

Expresión postfija 

Se usa la estrategia anterior 

Árbol de Expresión 

253*+1+

23Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 24/46

-Convertir una exp. infija en árbol de expresión : se debe convertir la exp. infija en postfija y a partir de ésta, construir el árbol de expresión.

Estrategia del Algoritmo para convertir exp. infija en postfija : 

a) si es un operando   se coloca en la salida.b) si es un operador   se maneja una pila según la prioridad de 

este operador en relación al operador de la pila 

Algoritmos y Estructuras de Datos 24

operador con >= prioridad – se apila operador con < prioridad – se desapila elemento 

colocándolo en la salida, hasta encontrar uno de menor prioridad (si se encuentra de = prioridad 

también se desapila), luego se apila el operador.

c) cuando se llega al final de la expresión, se desapilan todos los elementos llevándolos a la salida, hasta que la pila quede vacía.

24Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 25/46

- Consideraciones tenidas en cuenta en el Algoritmo: 

Prioridad de los operadores de menor a mayor: + y - , * y / 

“ “ 

Algoritmos y Estructuras de Datos 25

 mayor prioridad y se desapilan sólo cuando aparece un “ ) ” .

25Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 26/46

Algoritmo : tomar un carácter mientras ( existe carácter ) hacer 

si es un operando  se coloca en la salida.si es un operador   

- “(“ se apila operador 

- “)” se desapila elemento y se lleva a la salida hasta encontrar “(“, que se desapila pero no va a la salida.

- “ + ”,” * ”,” - ”,” / ” Si el operador es de mayor prioridad que el tope 

Algoritmos y Estructuras de Datos 26

se apila si no se desapila elemento y se lleva a la salida hasta encontrar operador con menor y luego se apila el operador. (según b) de la Estrategia)

tomo otro carácter fin 

se desapilan los elementos y se llevan a la salida hasta que se vacíe la pila.

26Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 27/46

 EjercitaciónÁrbol binario de expresión 

Ejercicio 1.Dada la siguiente expresión postfija :  I J K + + A B * C - * , dibuje su correspondiente árbol binario de expresión 

* * 

Algoritmos y Estructuras de Datos 27

 

expresión prefija 

Ejercicio 2.Dada la siguiente expresión prefija :  * + I + J K - C * A B  , dibuje 

su correspondiente árbol binario de expresión Convierta la expresión ((a + b) + c * (d + e) + f ) * (g + h) en expresión postfija 

27Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 28/46

Árboles Generales

28Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 29/46

Agenda DefiniciónDefinición

Descripción y terminologíaDescripción y terminología

emp osemp os

RepresentacionesRepresentaciones

RecorridosRecorridos Tiempo de ejecución de los recorridosTiempo de ejecución de los recorridos

29Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 30/46

Definición

Un árbol es una colección de nodos, tal que:

• puede estar vacía. (Árbol vacío)

• puede estar formada por un nodo distinguido R,llamado raíz y un conjunto de árboles T 1 , T 2 , ….T k  ,k ≥ 0 (subárboles), donde la raíz de cada subárbol

T i está conectado a R por medio de una arista

30Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 31/46

Descripción y terminología• Grado del árbol es el grado del nodo con mayor

grado.

• Árbol lleno: Dado un árbol T de grado k y altura h, diremos ue T es lleno si cada nodo interno

tiene grado k y todas las hojas están en el mismonivel (h).

Es decir, recursivamente, T es lleno si :

1.- T es un nodo simple ( árbol lleno de altura 0), o2.- T es de altura h y todos sus sub-árboles sonllenos de altura h-1.

31Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 32/46

Descripción y terminología• Árbol completo: Dado un árbol T de grado k y

altura h, diremos que T es completo si es lleno dealtura h-1 y el nivel h se completa de izquierda aderecha

• Cantidad de nodos en un árbol lleno:Sea T un árbol lleno de grado k y altura h, lacantidad de nodos N es (k h+1 – 1) / (k-1)

32Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 33/46

Descripción y terminología

• Cantidad de nodos en un árbol completo:Sea T un árbol completo de grado k y altura h, lacantidad de nodos N varía entre (k h +k -2) / (k-1) y

(kh+1

– 1) / (k-1)

33Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 34/46

EjemplosEjemplos

Organigrama de una empresa Árboles genealógicos

  Taxonomía que clasifica organismos Organización de un libro en capítulos y

secciones

Sistemas de archivos

34Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 35/46

Ejemplo: Sistema de archivosEjemplo: Sistema de archivos

doc bin lib etc tm users

/usr

cp grep sort mail motd passwd

35Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 36/46

RepresentacionesRepresentaciones Lista de hijos

• Cada nodo tiene:• Información propia del nodo

 •  

Hijo más izquierdo y hermano derecho

• Cada nodo tiene:

• Información propia del nodo• Referencia al hijo más izquierdo• Referencia al hermano derecho

36Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 37/46

Representación: Lista de hijosRepresentación: Lista de hijos La lista de hijos, puede estar implementada a

través de:• Arreglos

• Desventaja: espacio ocupado• Listas dinámicas

• Mayor flexibilidad en el uso

37Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 38/46

Representación: Lista de hijosRepresentación: Lista de hijos

A

CB D E

F

G H

38Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 39/46

Representación: Hijo másRepresentación: Hijo másizquierdo y hermano derechoizquierdo y hermano derecho

A

CB D E

F G H

39Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 40/46

RecorridosRecorridos Preorden

• Se procesa primero la raíz y luego los hijos

Inorden• Se procesa el primer hijo, luego la raíz y por último los

restantes hi os

Postorden• Se procesan primero los hijos y luego la raíz

Por niveles• Se procesan los nodos teniendo en cuenta sus niveles, primerola raíz, luego los hijos, los hijos de éstos, etc.

40Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 41/46

RecorridoRecorrido:: PreordenPreorden

/usr

doc bin lib etc

cp grep sort mail motd passwd

tmp users

41Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 42/46

RecorridoRecorrido:: PorPor nivelesniveles

/usr

doc bin lib etc

cp grep sort mail motd passwd

tmp users

42Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 43/46

RecorridoRecorrido:: PreordenPreordenpublic void  preorden() {

imprimir (this.getRaiz().getDato());

Lista hijos;

 os = s.ge os;

hijos.comenzar()

while (!hijos.fin()) {

hijos.actual().preOrden();

hijos.siguiente();

}

}

43Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 44/46

RecorridoRecorrido PreordenPreorden:: TiempoTiempo dedeEjecuciónEjecución

Considerando un árbol lleno de grado k yaltura h 

c n = 1T(n) = 

c +  k T( (n – 1) / k ) n >1

T(n) es O(n)

44Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 45/46

RecorridoRecorrido PreordenPreorden:: TiempoTiempo dedeEjecuciónEjecución

Otra forma: expresando en función de la altura

c h = 0 T(h) = 

c +  k T( h – 1 ) h >0 

T(n) es O(n)

45Algoritmos y Estructuras de Datos

5/14/2018 Arboles Binarios Grales AyED 2011 - slidepdf.com

http://slidepdf.com/reader/full/arboles-binarios-grales-ayed-2011 46/46

Recorrido: Por nivelesRecorrido: Por nivelesporNiveles() {

Lista hijos;

ArbolGeneral arbol;

Cola cola = new Cola();

cola.encolar(this);

while (!cola.esVacia()) {

arbol = cola.desencolar();

Algoritmos y Estructuras de Datos 46

 

imprimir (this.getRaiz().getDato());

hijos = this.getListaHijos();

hijos.comenzar();

while (!hijos.fin()) {

cola.encolar(hijos.actual());

hijos.siguiente();

}

}

}

46Algoritmos y Estructuras de Datos