Upload
diego-takahashi
View
40
Download
0
Embed Size (px)
Citation preview
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