Professional Documents
Culture Documents
Seminario de Grado
Modulo: Algoritmos y Estructura de Datos
“Tema 9. Árboles”
15
Raiz=15
Nodos: 15, 6, 20….
6 20
Ramas(15, 6); (20, 17)
Grado del 15= G(15)=2
G(10)=0; G(20)=2 4 10 17 22
Terminología
A Nivel 0 •Padres: A; B y C.
•Hijos: De A( B y C), de B (D y E)
•Descendentes de B: D y E
B Nivel 1 C •Ascendientes de E: B y A.
•Hermano: {B, C}, {F, G}
•Hojas: D, E, F, G
D E F G •Altura del Árbol: 3
Nivel 2 •Altura del Subárbol de B: 2
Equilibrio en Árbol Binario
10 15
–1 0
4 17 6 20
1 0 0 0
6 15 20 4 10 17 22
Árbol Equilibrado Árbol Perfectamente Equilibrado
Árbol Binario
10 32
6 20
4 15 31 45
1 6 4 10 17 22
Completo de profundidad 4 Lleno de profundidad 3
TAD Árbol Binario: Especificación
} Nodo;
Typedef Nodo* ArbolBinario; Nodo Raíz
A
B C
null H null
null I null null N null
Creación del Árbol
Espera Jesus
a1 nza
null Maria null null Rodri null null Any null null Abel null
a2 go
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 Anchura: 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–Raiz–DER
Recorrido PreOrden (RID)
void preOrden(ArbolBinario
raíz)
{ if(raiz)
{ visitar(raiz–>dato);
void visitar(TipoElemento x)
preOrden(raiz–>izq); {printf(“ %i ”, x);}
preOrden(raiz–>der);
}
} 15
6 20
4 10 17 22
void enOrden(ArbolBinario
raíz)
{ if(raiz)
15
{ enOrden(raiz–>izq);
visitar(raiz–>dato);
enOrden(raiz–>der); 6 20
}
}
4 10 17 22
void PostOrden(ArbolBinario
raíz)
{ if(raiz)
{ PostOrden(raiz–>izq);
15
PostOrden(raiz–>der);
visitar(raiz–>dato);
} 6 20
}
4 10 17 22
• PreOrden RID
– 18, 12, 5, 9, 28, 20, 35
• EnOrden IRD
18
– 5, 9, 12, 18, 20, 28, 35
• PostOrden IDR
– 9, 5, 12, 20, 35, 28, 18
12 28
5 20 35
8
8 8
x 3
3
1
y <x Z >x
Continua . . .
Creación de un Árbol
Binario de Búsqueda (cont.)
8 8 8 8
3 20 3 20 3 3 20
20
1 1 1 5 10
10 1 5 10
4
Búsqueda en Árbol de Búsqueda
8
• Eliminar el Nodo 8.
• Bajaremos al 1er nodo de la 3 20
Rama Izquierda: Nodo 3 1 10
5
• Como la clave mayor está a su
derecha, se continúa bajando a 4
derecha hasta encontrar un
nodo sin rama DER: El nodo 5. 5
• Se reemplaza el 8 por el 5. 3 20
• Queda un caso de Hijo Único.
1 ?? 10
• El Abuelo (3) se encargará del
Nieto (4). 4
3 20
1 4 10