Está en la página 1de 25

Estructura de Datos

Árboles Binarios de Búsqueda


¿Qué es un Árbol?

• Es una estructura de datos jerárquica.


• La relación entre los elementos es de uno a
muchos.
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
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

F y G son Nodos Hijos de C


D E F G
F y G son hermanos
K
H
Terminología

• Nodo Hoja: Aquel nodo que no tiene hijos.

B C

D E F G
D, H, F y K son Nodos Hojas
K
H
Terminología

• Subárbol: Todos los nodos descendientes por la izquierda


o derecha de un nodo.

B C

D E F G
Subárbol derecho de C
K
H

Subárbol izquierdo de C
Altura y Niveles

A
Altura Nivel 0
del árbol C
B
=4 Nivel 1
D E F G
Nivel 2
K
H
Nivel 3

La Altura es la cantidad de niveles.


Arbol Binario
• Se define un árbol binario como un conjunto
finito de elementos (nodos) que bien esta
vacío o esta formado por una raíz con dos
arboles binarios disjuntos, es decir, dos
descendientes directos llamados subarbol
izquierdo y subarbol derecho.
Árbol Binario de Búsqueda (ABB)
• Este tipo de árbol permite almacenar
información ordenada.
• Reglas a cumplir:
– El árbol vacío es un árbol binario que no contiene
ningún nodo
– 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
Buscar un nodo...
Buscar el 25
Paso ¿El 25 es mayor o
menor que el 21?
Paso
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
Encontrad
o
Agregar nodos
• Reglas:
– Que el valor a insertar no exista en el árbol.
– Que el nuevo nodo a insertar sea un Nodo Hoja
del árbol.
• Procedimiento
1. Buscar el Nodo Padre del nodo a agregar.
2. Agregar el nodo.
Ejemplo
Agregar el valor 26

Paso ¿El 26 es mayor o


menor que el 21?
Paso
21
1 2 21
¿El 26 es
13 33 33 mayor o menor
13 que el 33?

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
Importante

• 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

Este árbol está 18


desbalanceado
porque los valores se
agregaron en el siguiente 21
orden:
10, 13, 18, 21, 25, 33, 40
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

1. Localizar el nodo predecesor o sucesor del


nodo a borrar.
– El PREDECESOR es “el Mayor de los Menores”.
– El SUCESOR es “el Menor de los Mayores”.
– Para la implementación es igual de eficiente
programar la búsqueda del predecesor que del
sucesor.
2. El valor del Predecedor (o sucesor) se copia al
nodo a borrar.
3. Eliminar el nodo del predecesor (o sucesor
según sea el caso).
Predecesor

Uno a la IZQUIERDA y todo a la DERECHA

21

El predecesor de: Es:


33
13
33 30

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:
13
33 21 25

33 40
10 18 25 40
29 30
29

27 30
Caso: Eliminar Nodo con dos hijos
Eliminar el valor 21
utilizando el predecesor
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 Predecesor

Copiar el valor del Paso


Paso Predecesor al nodo que 4 18
3 18 contenía el valor a borrar

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

Copiar el valor del Paso


Paso Sucesor al nodo que 4 25
3 25 contenía el valor a borrar

13 33

13 33

10 18 25 40
10 18 40
25 Desconectar y liberar el
nodo del Sucesor
Ejercicios
• Construir los siguientes arboles ABB con las
claves e identificar sus componentes:
1. 50,25,75,10,40,60,90,35,45,70,42.
2. 20, 16, 44, 57, 93, 32, 65, 19, 8 y 17
3. 35, 18, 9, 58,14, 49, 51, 67, 60
4. 24, 14, 6, 35, 59, 17, 21, 32, 4, 7, 15, 22
5. 13, 7, 21, 15, 27,18, 4, 11, 30
Ejercicios
• Mediante el metodo de sucesor eliminar
– En el ejercicio 1 anterior eliminar el nodo 60 , 90
– En el ejercicio 2 anterior eliminar el nodo 32 , 8
– En el ejercicio 3 anterior eliminar el nodo 14 , y 60
– En el ejercicio 4 anterior eliminar el nodo 24 , y 22
• Mediante el metodo de predecesor eliminar
– En el ejercicio 1 anterior eliminar el nodo 50
– En el ejercicio 2 anterior eliminar el nodo 17
– En el ejercicio 5 anterior eliminar el nodo 13

También podría gustarte