Está en la página 1de 10

5/3/2018

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.

Los ABB son:


 Método de búsqueda simple, dinámico y eficiente.
 Uno de los fundamentales en Ciencia de la Computación.

Carlos San Juan - Estructuras de Datos 2018-I - csanjuan@ubiobio.cl 2

1
5/3/2018

Ejemplos de ABB

¡No es ABB!
Árbol Balanceado

Carlos San Juan - Estructuras de Datos 2018-I - csanjuan@ubiobio.cl 3

Á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?

Carlos San Juan - Estructuras de Datos 2018-I - csanjuan@ubiobio.cl 4

2
5/3/2018

Solución ejercicio anterior


 1 2 4

 Para mostrar los valores de menor a mayor, se debe recorrer en inorden.


 Para mostrar los valores de mayor a menor, se debe recorrer en inorden
inverso (subárbol der – raíz – subárbol izq)
Carlos San Juan - Estructuras de Datos 2018-I - csanjuan@ubiobio.cl 5

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.

Carlos San Juan - Estructuras de Datos 2018-I - csanjuan@ubiobio.cl 6

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.

Carlos San Juan - Estructuras de Datos 2018-I - csanjuan@ubiobio.cl 7

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.

Carlos San Juan - Estructuras de Datos 2018-I - csanjuan@ubiobio.cl 8

4
5/3/2018

Buscar en un ABB
TREE-SEARCH(x, 13)

 Tiempo de ejecución del algoritmo de búsqueda


 O(h) donde h es la altura del árbol.

Carlos San Juan - Estructuras de Datos 2018-I - csanjuan@ubiobio.cl 9

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.

Carlos San Juan - Estructuras de Datos 2018-I - csanjuan@ubiobio.cl 10

5
5/3/2018

Buscar el Min en un ABB


 Para encontrar el valor mínimo del árbol, se navega a través de todos los hijos
izquierdos de los nodos visitados hasta encontrar un NULL.

Carlos San Juan - Estructuras de Datos 2018-I - csanjuan@ubiobio.cl 11

Buscar el Max en un ABB


 Para encontrar el valor máximo del árbol, se navega a través de todos los
hijos derechos de los nodos visitados hasta encontrar un NULL.

Carlos San Juan - Estructuras de Datos 2018-I - csanjuan@ubiobio.cl 12

6
5/3/2018

Buscar el Sucesor en un ABB


 Hacer en clases

Carlos San Juan - Estructuras de Datos 2018-I - csanjuan@ubiobio.cl 13

Buscar el Predecesor en un ABB


 Hace en clases

Carlos San Juan - Estructuras de Datos 2018-I - csanjuan@ubiobio.cl 14

7
5/3/2018

Insertar en un ABB

Carlos San Juan - Estructuras de Datos 2018-I - csanjuan@ubiobio.cl 15

Eliminar en un ABB
 Debemos considerar diferentes casos al querer eliminar un nodo:
 Caso 1: Cuando el nodo es una hoja.

Carlos San Juan - Estructuras de Datos 2018-I - csanjuan@ubiobio.cl 16

8
5/3/2018

Eliminar en un ABB
 Caso 2: Cuando el nodo a eliminar tiene un sub-árbol (izq o der).

Carlos San Juan - Estructuras de Datos 2018-I - csanjuan@ubiobio.cl 17

Eliminar en un ABB
 Caso 3: Cuando el nodo a eliminar tiene un sub-árbol izquierdo y un subárbol
derecho.

Carlos San Juan - Estructuras de Datos 2018-I - csanjuan@ubiobio.cl 18

9
5/3/2018

Carlos San Juan - Estructuras de Datos 2018-I - csanjuan@ubiobio.cl 19

10

También podría gustarte