You are on page 1of 57

Árboles

1
Aprendizajes esperados
 Arboles
 Terminología de árboles
 Arboles recubridores mínimos
 Arboles binarios
 Búsquedas en árboles binarios
 Operaciones en árboles binarios
 Tipos de búsqueda

2
Introducción
¿Qué estructura de datos se debe utilizar para
representar estructuras jerárquicas o taxonómicas?
Ejemplo:

Director

SubDir1 SubDir2 SubDir3

J´Dpto1 J´Dpto2 J´Dpto3 J´Dpto4 J´Dpto5


Definición de Árbol
 Árbol: Grafo conexo y sin ciclos
 Ejemplo:

 A menudo se selecciona un nodo especial al que se llama raíz, y


se dibuja con la raíz en la parte superior, sus adyacentes más
abajo y así sucesivamente:

4
Árboles
 Ejemplo: Una estructura de carpetas y archivos
es un árbol

5
Árboles
 Ejemplos:

Análisis de expresiones Árboles de búsqueda

6
Terminología de Árboles
 Terminología
 Los vértices de un árbol se llaman nodos
 Los nodos descendientes inmediatos de un nodo son
sus hijos, y el nodo superior es el padre
 A una secuencia descendente de nodos se le llama
rama
 Los nodos sin hijos se llaman hojas, y los que sí
tienen hijos nodos internos
 Un conjunto de árboles es un bosque

7
Terminología
 Nodo: Cada elemento en un árbol.
 Nodo Raíz: Primer elemento agregado al árbol.

Nodo Raíz
A

B C

D E F G

K
H
Más terminología
 Nodo Padre: Se le llama así al nodo predecesor de un elemento.
 Nodo Hijo: Es el nodo sucesor de un elemento.
 Hermanos: Nodos que tienen el mismo nodo padre.

A
Nodo Padre
B C

F y G son Nodos Hijos de C


D E F G
F y G son hermanos
K
H
Más terminología

 Nodo Hoja: Aquel nodo que no tiene hijos.

B C

D E F G
D, H, F y K son Nodos Hojas
K
H
Más terminología

 Subárbol: Todos los nodos descendientes por la izquierda o


derecha de un nodo.

B C

D E F G
Subárbol derecho de C
K
H

Subárbol izquierdo de C
Altura y Niveles

A
Altura del Nivel 1
árbol = 4 C
B
Nivel 2
D E F G
Nivel 3
K
H
Nivel 4

La Altura es la cantidad de niveles.


Propiedades de Árboles
 Algunas propiedades.
Sea G =(V,A) un árbol.
Entonces:
 Entre cada par de vértices x,y
hay un único camino
 Al quitar de A cualquier arista
resulta un bosque con 2
árboles
 Al añadir una arista nueva
siempre se obtiene un ciclo
 |A| = |V| -1

13
Árboles recubridores
 Dado un grafo conexo G
=(V,A) decimos que un árbol T
=(V’,A’) es un árbol recubridor
de G si V=V’, y A’  A.
 En el caso de grafos valorados
interesa que la suma de pesos de
las aristas del árbol sea lo más
pequeña posible: árbol
de
recubrimiento mínimo.
14
Árboles recubridores
 Dado un grafo conexo G =(V,A) decimos que
un árbol T =(V’,A’) es un árbol recubridor de
G si V=V’, y A A’.
 En el caso de grafos valorados interesa que la
suma de pesos de las aristas del árbol sea lo más
pequeña posible: árbol de recubrimiento
mínimo.

15
Árbol de recubrimiento mínimo

16
Algoritmo de Prim
 Se usa para construir árboles recubridores:
1. Se elige un vértice cualquiera del grafo como vértice inicial
y se marca.
2. Mientras que queden vértices no marcados elegimos un
vértice no marcado que esté conectado con alguno
marcado. Marcamos tanto el vértice como una de las aristas
que lo unen con los ya marcados
 En el caso de grafos valorados en cada paso se toma
la arista de menor peso que cumpla 2) y se obtiene un
árbol de recubrimiento mínimo.

17
Ejercicio 1:
Determine un árbol de expansión o de recubrimiento

18
Ejemplo: Árbol de recubrimiento
mínimo

19
Algoritmo de Prim
 Se usa para construir árboles recubridores:
1. Se elige un vértice cualquiera del grafo como vértice inicial
y se marca.
2. Mientras que queden vértices no marcados elegimos un
vértice no marcado que esté conectado con alguno
marcado. Marcamos tanto el vértice como una de las aristas
que lo unen con los ya marcados
 En el caso de grafos valorados en cada paso se toma
la arista de menor peso que cumpla 2) y se obtiene un
árbol de recubrimiento mínimo.

20
Ejercicio
Determine el árbol de expansión mínima

21
Solución

22
Formalizando el algoritmo
 Propiedad: Sea G = (V, E) un grafo conectado con pesos.
Sea U un subconjunto del conjunto de vértices V.
Si e=(u, v) es la arista de menor costo considerando que u  U
y v  V-U, entonces hay un árbol de cubrimiento mínimo que
incluye (u, v) como arista.

V-U

U
e
Algoritmo de Prim
1 1 1
6 5 6 5 6 5
1 1 1
2 5 5 4 2 5 5 4 2 5 5 4
3 3 3
3 6 4 2 3 6 4 2 3 6 4 2

5 6 5 6 5 6
6 6 6

1 1 1
6 5 6 5 6 5
1 1 1
2 5 5 4 2 5 5 4 2 5 5 4
3 3 3
3 6 4 2 3 6 4 2 3 6 4 2

5 6 5 6 5 6
6 6 6
Costo Total = 15
Algoritmo de Kruskal
 Añade una arista cada vez por orden de peso.
 Acepta una arista si no produce un ciclo.
 Se implementa usando una cola de prioridad.
Algoritmo de Kruskal
1 1 1
6 5 6 5 6 5
1 1 1
2 5 5 4 2 5 5 4 2 5 5 4
3 3 3
3 6 4 2 3 6 4 2 3 6 4 2

5 6 5 6 5 6
6 6 6

1 1 1
6 5 6 5 6 5
1 1 1
2 5 5 4 2 5 5 4 2 5 5 4
3 3 3
3 6 4 2 3 6 4 2 3 6 4 2

5 6 5 6 5 6
6 6 6
Costo Total = 15
Ejercicio
 Ejemplo: Determine árbol de expansión mínima
 Por el método de PRIM
 Por el método de KRUSKAL
1 2
3
2
3 6 2
1

5 3
4
5 5

6
4
6
Ejercicio. Aplicar el Algoritmo de
Kruskal

28
Árboles Binarios
Árbol Binario
• Árbol donde ningún nodo puede tener mas de 2
subárboles.
• En cualquier nivel n, solo puede contener de 1 a 2n-1 nodos

20
10 32
4 15 31 45

1 6
Árbol Binario
• Árbol Completo: de Altura n es un árbol en el que para c/nivel, del
1 al n, está lleno de nodos. Todos los nodos hoja a nivel n ocupan
posiciones a la izquierda.

20

10 32

4 15 31 45

1 6
Árbol Binario
• Árbol Lleno: tiene el máximo número de entradas para su altura:
2n. A Nivel k, tendrá 2k–1 nodos. (Nivel = Profundidad)
– Lleno de Profundidad 3 = Nivel 2 => 22+1–1 nodos= 23–1= 7
nodos
• Árbol Degenerado: hay un solo nodo hoja (el 18) y cada nodo no
hoja tiene solo un hijo. Equivalente a una lista enlazada.

15 5
9

6 20
12
18
4 10 17 22

Lleno de profundidad 3 Degenerado de profundidad 4


CONVERSION DE UN ARBOL GENERAL A
ARBOL BINARIO
1.-La raíz del árbol general es la raíz del árbol binario.
2.-Para cada nodo se forma una lista encadenada simple con
todas las ramificaciones del nodo, constituyendo los sub arboles
derecho y los subárbol izquierdos lo constituyen el primer nodo
izquierdo que se ramifica. T

F A Z

X H

B Q M D
ARBOL BINARIO RESULTANTE

F A Z

X
H

B
Q
M D
OPERACIONES BASICAS EN UN ARBOL BINARIO

•CREACION
•RECORRIDO.
CREACION DEL ARBOL BINARIO.

El arbol se crea con una estructura y una cantidad de nodos definido.

raiz

A F

Z B Q

H
Recorrido del Árbol
• Recorrer el Árbol significa que cada nodo sea procesado una vez
y solo una en un secuencia determinada. Existen 2 enfoques
generales
– Recorrido en Profundidad: el proceso exige alcanzar las profundidades
de un camino desde la raíz hacia el descendiente mas lejano del primer
hijo, antes de proseguir con el segundo.
– Recorrido en Amplitud: el proceso se realiza horizontalmente desde la
raíz a todos su hijos antes de pasar con la descendencia de alguno de ellos.

1 2 3

2 3 1 3 1 2
Preorden RID EnOrden IRD PostOrden IDR
Raiz–IZQ–DER IZQ–Raiz–DER IZQ–DER–Raiz
Recorrido PreOrden (RID)
15

6 20

4 10 17 22

El recorrido en PreOrden del árbol es


el siguiente:
15, 6, 4, 10, 20, 17, 22
Recorrido EnOrden (IRD)
15

6 20

4 10 17 22

El recorrido en EnOrden del árbol es


el siguiente:
4, 6, 10, 15, 17, 20, 22
Recorrido PostOrden (IDR)
15

6 20

4 10 17 22

El recorrido en PostOrden del árbol es


el siguiente:
4, 10, 6, 17, 22, 20, 15
Comparacion de Recorridos

18
• PreOrden RID
– 18, 12, 5, 9, 28, 20, 35 12 28
• EnOrden IRD
– 5, 9, 12, 18, 20, 28, 35 5 20 35
• PostOrden IDR
9
– 9, 5, 12, 20, 35, 28, 18
RECORRIDO EN AMPLITUD.
En el recorrido por amplitud se visitan los nodos por niveles. Para ello se utiliza
una estructura auxiliar tipo "cola" en la que después de mostrar el contenido del
nodo, empezando por el nodo raíz, se almacenan los punteros correspondientes a
sus hijos izquierdo y derecho.

Resultado:
20, 10, 30, 5, 15, 25
Árbol Binario de Búsqueda (ABB)
 Este tipo de árbol permite almacenar
información ordenada.
 Reglas a cumplir:
 Cada nodo del árbol puede tener 0, 1 ó 2 hijos.
 Los descendientes izquierdos deben tener un valor
menor al padre.
 Los descendientes derechos deben tener un valor
mayor al padre.
Ejemplos de ABB…

21 30

33 33
13 21

5 25 36 41
18 32

40 43
15
¿Por qué no son ABB?

21 5

33 6
13 1

17 18 22 4
25 2

15 40
Ejercicio
 Almacenar los siguientes datos en un ABB
a) 2,6,8,9,15,25,34,45,78,99,126,332, 506

b) 5,7,2,9,1,16,,35,13,42,89,75,23,78,12

45
Proceso para buscar un nodo...
Buscar el 25
¿El
25 es mayor o
Paso Paso
21 menor que el 21?
1 2 21
¿El 25 es
13 33 33 mayor o menor
13
que el 33?

10 40 40
18 25 10 18 25

Paso
3 21

13 33

10 18 40
25
Encontrado
Proceso para agregar nodos...
 Reglas:
 El valor a insertar no existe en el árbol.
 El nuevo nodo será un Nodo Hoja del árbol.
 Procedimiento
1. Buscar el Nodo Padre del nodo a agregar.
2. Agregar el nodo hoja.
Ejemplo
Agregar el valor 26

Paso ¿El 26 es mayor o


menor que el 21?
Paso
21
1 2 21
¿El 26 es mayor
13 33 33 o menor que el
13 33?

10 40 40
18 25 10 18 25

Paso Paso
3 21 4 21

33 13 33
13

18 40 10 18 40
10 25 25
Se encontró el Nodo
Padre Agregar el nodo
26
Comentarios importantes....
 El orden de inserción de los datos, determina la forma del
ABB.
 ¿Qué pasará si se insertan los datos en forma ordenada?
 La forma del ABB determina la eficiencia del proceso de
búsqueda.
 Entre menos altura tenga el ABB, más balanceado estará, y
más eficiente será.
10

13

Este árbol está desbalanceado 18


porque los valores se agregaron
en el siguiente orden:
10, 13, 18, 21, 25, 33, 40 21

25
Proceso para eliminar un nodo
 Si el nodo a eliminar es un:
 Nodo hoja
 Buscar el Nodo Padre del nodo a borrar.
 Desconectarlo.
 Liberar el nodo.
 Nodo con un hijo
 Buscar el Nodo Padre del nodo a borrar.
 Conectar el hijo con el padre del nodo a borrar.
 Liberar el nodo.
 Nodo con dos hijos
 Localizar el nodo predecesor o sucesor del nodo a borrar.
 Copiar la información.
 Eliminar el predecesor o sucesor según sea el caso.
Caso: Eliminar Nodo hoja
Eliminar el valor 25

Paso 21
1
Nodo Padre
33 localizado
13

Paso
10 18 25 40 21
2

13 33

10 18 40
25
Desconectarlo y
liberar el nodo
Caso: Eliminar Nodo con un hijo
Eliminar el valor 25

Paso 21
1
Nodo Padre
33 localizado
13

Paso
10 18 25 40 21
2

29 13 33
25
27 30 40
10 18
29
Conectar el Nodo
Padre con el Nodo
27 30 Hijo y liberar el nodo.
Caso: Eliminar nodo con dos hijos

1. Localizar el nodo predecesor o sucesor del nodo


a borrar.
 El PREDECESOR es “el Mayor de los Menores”.
 El SUCESOR es “el Menor de los Mayores”.
 Para la implementación es igual de eficiente programar
la búsqueda del predecesor que del sucesor.
2. El valor del Predecedor (o sucesor) se copia al
nodo a borrar.
3. Eliminar el nodo del predecesor (o sucesor según
sea el caso).
Predecesor

Uno a la IZQUIERDA y todo a la DERECHA

21

33 El predecesor de: Es:


13
33 30

10 25 40 21 13

29 29 27

27 30
Sucesor
Uno a la DERECHA y todo a la IZQUIERDA

21
El sucesor de: Es:
33 21 25
13

40
33 40
10 18 25
29 30
29

27 30
Caso: Eliminar Nodo con dos hijos
Eliminar el valor 21
utilizando el predecesor

Paso Localizar el valor a Paso 21


1 21 borrar 2

13 33
13 33

10 40
40 18 25
10 18 25
Localizar el Predecesor

Copiar el valor del Predecesor Paso


Paso al nodo que contenía el valor 4 18
3 18 a borrar

13 33

13 33

10 25 40
18
10 18 40
25 Desconectar y liberar el nodo
del Predecesor
Caso: Eliminar Nodo con dos hijos
Eliminar el valor 21
utilizando el Sucesor
Paso Localizar el valor a Paso 21
1 21 borrar 2

13 33
13 33

10 40
40 18 25
10 18 25
Localizar el Sucesor

Copiar el valor del Sucesor al Paso


Paso nodo que contenía el valor a 4 25
3 25 borrar

13 33

13 33

10 18 25 40
10 18 40
25 Desconectar y liberar el nodo
del Sucesor

You might also like