Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Estructuras de Datos
Árbol de Búsqueda Binaria
Semestre: 2018-1
Código Asignatura: 634175
Profesor: Carlos San Juan Contreras
Email: csanjuan@ubiobio.cl
Definición de ABB
Es un árbol binario que almacena en cada nodo una clave.
Para cada nodo de un ABB debe cumplirse la siguiente propiedad:
Las claves de los nodos del subárbol izquierdo deben ser menores que la
clave de la raíz.
Las claves de los nodos del subárbol derecho deben ser mayores que la
clave de la raíz.
1
5/3/2018
Ejemplos de ABB
¡No es ABB!
Árbol Balanceado
Árbol Degenerado
Ejercicio
Dibuje un ABB dado los siguientes números:
1) 6-8-4-1-7-9-2-5-3
2) 20-25-30-35-40-45-50
3) 38-33-28-26-18-14-11
Dado el árbol de ejercicio 1, ¿cómo podemos mostrar el contenido de forma que los
valores contenidos estén ordenado de menor a mayor?
¿Y de mayor a menor?
2
5/3/2018
Análisis de un ABB
Para un árbol completo binario esto es Θ(lg n) en el pero
caso.
Si el árbol es una cadena lineal de n nodos, las mismas
operaciones toman Θ(n) en el pero caso.
3
5/3/2018
Operaciones de un ABB
Buscar un elemento.
Buscar el mínimo.
Buscar el máximo.
Predecesor.
Sucesor.
Insertar un elemento.
Borrar un elemento.
Operaciones para obtener información:
Comprobar si un árbol está vacío.
Contar el número de nodos.
Revisar si el nodo es hoja.
Calcular altura de un nodo.
Calcular altura de un árbol.
Buscar en un ABB
Partiendo siempre del nodo raíz, se realiza la búsqueda de forma recursiva.
Si el árbol está vacío, se termina la búsqueda.
Si el valor del nodo raíz es igual que el del elemento que buscamos, terminamos la
búsqueda con éxito.
Si el elemento buscado es menor que el valor del nodo raíz, continuaremos la
búsqueda en el sub-árbol izquierdo.
Si el elemento buscado es mayor que el valor del nodo raíz, continuaremos la
búsqueda en el sub-árbol derecho.
Al encontrase el valor, se retorna la referencia al nodo que posee dicho valor,
si no se ha encontrado se retorna NULL.
4
5/3/2018
Buscar en un ABB
TREE-SEARCH(x, 13)
Buscar en un ABB
Para la búsqueda en forma iterativa, el principio es similar a la forma
recursiva pero se utiliza un ciclo while para ir avanzando en el árbol.
Tiempo de ejecución del algoritmo de búsqueda iterativo.
O(h) donde h es la altura del árbol.
5
5/3/2018
6
5/3/2018
7
5/3/2018
Insertar en un ABB
Eliminar en un ABB
Debemos considerar diferentes casos al querer eliminar un nodo:
Caso 1: Cuando el nodo es una hoja.
8
5/3/2018
Eliminar en un ABB
Caso 2: Cuando el nodo a eliminar tiene un sub-árbol (izq o der).
Eliminar en un ABB
Caso 3: Cuando el nodo a eliminar tiene un sub-árbol izquierdo y un subárbol
derecho.
9
5/3/2018
10