Professional Documents
Culture Documents
Estructuras de
Datos I
Arboles Binarios - I
Arboles Binarios
• Definiciones alternativas: B C
– Un árbol con un sólo nodo, o un árbol cuya
raíz tiene un par ordenado de hijos, cada uno
de los cuales es a su vez un árbol binario
– Conjunto finito de nodos, que puede estar
vacío o consistir de una raíz y dos árboles D E F G
binarios disjuntos, llamados subárbol
izquierdo y derecho de la raíz.
H I
Nivel 3 G G
Nivel 2 D E F D F E
Nivel 1 B C C B
A A
Nivel 0
2 3
4 5 6 7
8 9 10 11 12 13 14 15
16 17 18 19 20 21 22 23 24 25
• Notación Propiedades:
n número de nodos • e=i+1
e número de nodos externos • n = 2e - 1
i número de nodos internos • hi
h altura
• h (n - 1)/2
• e 2h
• h log2 e
• h log2 (n + 1) - 1
• Operaciones básicas.
– Inserción, búsqueda, eliminación
• Recorridos
– Preorden
– Postorden
– inorden
2 5 9
1. Introducción 2. Métodos Casos
6 7 8
3 4
1.1 General 1.2 Aplicación 2.1 Insertar 2.2 Buscar 2.3 Eliminar
9
p2/
8
3 7
todo.txt
trabajos/ programas/
1K
1 2 4 5 6
h1c.doc h1nc.doc DDR.java Stocks.java Robot.java
3K 2K 10K 25K 20K
2 8
1 4 7 9
3 5
2 - 3 b
a 1
Algoritmos y Estructuras de Datos I 16
Aplicación de Arbol Binario: Arbol de Decisión
¿comida rápida?
Si No
2 - 3 b
((2 (a - 1)) + (3 b))
a 1
2 - 3 2
5 1
Algoritmos y Estructuras de Datos I 19
Ejercicios Arboles Binarios
TDA ArbolBinario
Raiz : ElementoArbolBinario
Primitivas
Buscar (UnaEtiquetaqueta) : ElementoArbolBinario...
....
ArbolBinario.Buscar(UnaEtiquetaqueta)
COM
resultado = nulo
si Raiz <> nulo ENTONCES
resultado = Raiz.Buscar(UnaEtiquetaqueta)
Devolver resultado
FIN
TDA ElementoArbolBinario
Etiqueta : TipoEtiqueta
HijoIzquierdo,HijoDerecho : ElementoArbolBinario
Operaciones
Insertar(unElementoArbolBinario)
Buscar(UnaEtiquetaqueta)
Eliminar(UnaEtiquetaqueta)
...
Algoritmos y Estructuras de Datos I 25
TArbolBB
TElementoAB raiz;
public TArbolBB () {…} // a Implementar
// a implementar
public TElementoAB(Comparable UnaEtiquetaqueta, Object unosDatos) {…}
ElementoArbolBinario.Buscar(UnaEtiquetaqueta) : ElementoArbolBinario
COM
RESULTADO = nulo
SI UnaEtiquetaqueta = Etiqueta ENTONCES
RESULTADO = THIS
SINO
SI UnaEtiquetaqueta < Etiqueta ENTONCES
SI HijoIzquierdo <> nulo ENTONCES
RESULTADO = HijoIzquierdo.Buscar(UnaEtiquetaqueta)
FINSI
SINO
SI HijoDerecho <> nulo ENTONCES
RESULTADO = HijoDerecho.Buscar(UnaEtiquetaqueta)
FINSI
FINSI
FINSI
devolver RESULTADO
FIN
// de TArbolBB
public TElementoAB buscar (Comparable
UnaEtiquetaqueta) {
if (esVacio()) {
return null;
} else {
return raiz.buscar(UnaEtiquetaqueta);
}
}
ArbolBinario.Insertar(unElementoArbolBinario)
COM
SI Raiz = nulo ENTONCES
Raiz = unElementoArbolBinario
SINO
Raiz.Insertar(unElementoArbolBinario)
FIN
ElementoArbolBinario.Insertar(UnElementoArbolBinario);
COM
SI Etiqueta = unElementoArbolBinario.Etiqueta ENTONCES
SALIR // ya está en el árbol
FINSI
SI unElementoArbolBinario.Etiqueta < Etiqueta ENTONCES
SI HijoIzquierdo = nulo ENTONCES
HijoIzquierdo UnNodoArbolBinario
SINO HijoIzquierdo.Insertar(UnNodoArbolBinario)
FINSI
SINO
SI HijoDerecho = nulo ENTONCES
HijoDerecho unElementoArbolBinario
SINO HijoDerecho.Insertar(unElementoArbolBinario)
FINSI
FINSI
FIN
TDA
TPalabra CrearArbol
clave string AbrirArchivo
cuenta integer MIENTRAS NO FIN ARCHIVO HACER
izquierdo, derecho: TPalabra LEER(archivo, palabra);
Arbol.Insertar(palabra);
end;
10
10
5 15
5 15
3 8 18
3 8 13 18
(a) (b)
10 10
8
5 18 3 18
3 18
3 8 8
// Cuando encuentra el nodo a eliminar llama, por claridad, al método que hace el trabajo
elHijo.hijoDer hijoDer
retornar elHijo // elHijo quedara en lugar de this
Fin
Algoritmos y Estructuras de Datos I 45
Análisis de Búsqueda e Inserción en
Arbol Binario de Búsqueda
• Los algoritmos de inserción y búsqueda
analizados no controlan el balanceo del árbol.
• Se desconoce a priori la forma en que el árbol ha
de crecer.
• Si el árbol estuviera balanceado, para encontrar
una clave se precisarían aproximadamente log n
comparaciones.
• El peor caso se da para n/2 comparaciones.
• El problema es encontrar la cantidad promedio
de comparaciones.
• n claves, n! árboles correspondientes a n!
permutaciones de claves.
Algoritmos y Estructuras de Datos I 47
Ejercicios Arboles Binarios de Búsqueda