Professional Documents
Culture Documents
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
4
Árboles
Ejemplo: Una estructura de carpetas y archivos
es un árbol
5
Árboles
Ejemplos:
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
B C
D E F G
D, H, F y K son Nodos Hojas
K
H
Más terminología
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
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
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.
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
6 20
4 10 17 22
6 20
4 10 17 22
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
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
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
21
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
13 33
13 33
10 40
40 18 25
10 18 25
Localizar el Predecesor
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
13 33
13 33
10 18 25 40
10 18 40
25 Desconectar y liberar el nodo
del Sucesor