10 Árbol binario de búsqueda - docencia.eafranco.com€¦ · Contenido •Árbol binario de...
Transcript of 10 Árbol binario de búsqueda - docencia.eafranco.com€¦ · Contenido •Árbol binario de...
![Page 1: 10 Árbol binario de búsqueda - docencia.eafranco.com€¦ · Contenido •Árbol binario de búsqueda •Búsquedas •Inserción •Eliminación •Operaciones útiles en un ABB](https://reader033.fdocument.pub/reader033/viewer/2022053023/6054a2e53504357c2a6f121c/html5/thumbnails/1.jpg)
Tema 10: Árbol binario de búsqueda
Estructuras de datos (Prof. Edgardo A. Franco)
1M. en C. Edgardo Adrián Franco Martínez http://[email protected]
@edfrancom edgardoadrianfrancom
![Page 2: 10 Árbol binario de búsqueda - docencia.eafranco.com€¦ · Contenido •Árbol binario de búsqueda •Búsquedas •Inserción •Eliminación •Operaciones útiles en un ABB](https://reader033.fdocument.pub/reader033/viewer/2022053023/6054a2e53504357c2a6f121c/html5/thumbnails/2.jpg)
Contenido• Árbol binario de búsqueda• Búsquedas
• Inserción
• Eliminación
• Operaciones útiles en un ABB• Contar nodos
• Sumar nodos
• Contar hojas
• Calcular la profundidad
• Comentarios importantes• Liga web
Estr
uct
ura
s d
e d
ato
s1
0 Á
rbo
l bin
ario
de
bú
squ
eda
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
2
![Page 3: 10 Árbol binario de búsqueda - docencia.eafranco.com€¦ · Contenido •Árbol binario de búsqueda •Búsquedas •Inserción •Eliminación •Operaciones útiles en un ABB](https://reader033.fdocument.pub/reader033/viewer/2022053023/6054a2e53504357c2a6f121c/html5/thumbnails/3.jpg)
• Un árbol binario de búsqueda es un tipoespecial de árbol binario cuya principalcaracterística es que la información sealmacena en los nodos cuidando mantenercierto orden.
13
21
5 18
15
25
40
36
33
Estr
uct
ura
s d
e d
ato
s1
0 Á
rbo
l bin
ario
de
bú
squ
eda
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
3
![Page 4: 10 Árbol binario de búsqueda - docencia.eafranco.com€¦ · Contenido •Árbol binario de búsqueda •Búsquedas •Inserción •Eliminación •Operaciones útiles en un ABB](https://reader033.fdocument.pub/reader033/viewer/2022053023/6054a2e53504357c2a6f121c/html5/thumbnails/4.jpg)
• En un ABB sus nodos también son ABB y contieneninformación ordenada de tal manera que todos loselementos a la izquierda de la raíz son menores a laraíz y todos los elementos a la derecha de la raízson mayores a la raíz.
x
y<x z>x
Estr
uct
ura
s d
e d
ato
s1
0 Á
rbo
l bin
ario
de
bú
squ
eda
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
4
![Page 5: 10 Árbol binario de búsqueda - docencia.eafranco.com€¦ · Contenido •Árbol binario de búsqueda •Búsquedas •Inserción •Eliminación •Operaciones útiles en un ABB](https://reader033.fdocument.pub/reader033/viewer/2022053023/6054a2e53504357c2a6f121c/html5/thumbnails/5.jpg)
• En un ABB
• Todos los nodos a la izquierda son menores al padre.
• Todos los nodos a la derecha son mayores al padre.
• Un nodo solo puede tener 2 hijos a lo mucho.
13
21
5 18 25 36
33 13
21
17 18 2522
33
Estr
uct
ura
s d
e d
ato
s1
0 Á
rbo
l bin
ario
de
bú
squ
eda
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
5
![Page 6: 10 Árbol binario de búsqueda - docencia.eafranco.com€¦ · Contenido •Árbol binario de búsqueda •Búsquedas •Inserción •Eliminación •Operaciones útiles en un ABB](https://reader033.fdocument.pub/reader033/viewer/2022053023/6054a2e53504357c2a6f121c/html5/thumbnails/6.jpg)
• Los árboles binarios de búsqueda se utilizantípicamente como estructura de datos para larepresentación de conjuntos de datos con unaclave única y operaciones:
• Inserta: para insertar un elemento dado en elconjunto.
• Suprime: para suprimir un elemento determinadode el conjunto
• Busca: para saber y obtener si un elemento dadopertenece o no al conjunto.
Estr
uct
ura
s d
e d
ato
s1
0 Á
rbo
l bin
ario
de
bú
squ
eda
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
6
![Page 7: 10 Árbol binario de búsqueda - docencia.eafranco.com€¦ · Contenido •Árbol binario de búsqueda •Búsquedas •Inserción •Eliminación •Operaciones útiles en un ABB](https://reader033.fdocument.pub/reader033/viewer/2022053023/6054a2e53504357c2a6f121c/html5/thumbnails/7.jpg)
• La inserción es una operación que se puede realizareficientemente en un árbol binario de búsqueda. Laestructura crece conforme se inserten elementos alárbol.
• Los pasos que deben realizarse para insertar unelemento a un ABB son los siguientes:
1. Debe compararse el valor o (clave del elemento) ainsertar con la raíz del árbol. Si es mayor, debeavanzarse hacia el subárbol derecho. Si es menor, debeavanzarse hacia el subárbol izquierdo.
Árbol binario de búsqueda (Inserción)
Estr
uct
ura
s d
e d
ato
s1
0 Á
rbo
l bin
ario
de
bú
squ
eda
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
7
![Page 8: 10 Árbol binario de búsqueda - docencia.eafranco.com€¦ · Contenido •Árbol binario de búsqueda •Búsquedas •Inserción •Eliminación •Operaciones útiles en un ABB](https://reader033.fdocument.pub/reader033/viewer/2022053023/6054a2e53504357c2a6f121c/html5/thumbnails/8.jpg)
2. Repetir sucesivamente el paso 1 hasta que se cumplaalguna de las siguientes condiciones
• El subárbol derecho es igual a vació, o el subárbol izquierdo esigual a vació; en cuyo caso se procederá a insertar el elemento enel lugar que le corresponde.
• El valor o clave que quiere insertarse es igual a la raíz del árbol; encuyo caso no se realiza la inserción.
Estr
uct
ura
s d
e d
ato
s1
0 Á
rbo
l bin
ario
de
bú
squ
eda
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
8
![Page 9: 10 Árbol binario de búsqueda - docencia.eafranco.com€¦ · Contenido •Árbol binario de búsqueda •Búsquedas •Inserción •Eliminación •Operaciones útiles en un ABB](https://reader033.fdocument.pub/reader033/viewer/2022053023/6054a2e53504357c2a6f121c/html5/thumbnails/9.jpg)
Árbol binario de búsqueda (Inserción)
Estr
uct
ura
s d
e d
ato
s1
0 Á
rbo
l bin
ario
de
bú
squ
eda
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
9
![Page 10: 10 Árbol binario de búsqueda - docencia.eafranco.com€¦ · Contenido •Árbol binario de búsqueda •Búsquedas •Inserción •Eliminación •Operaciones útiles en un ABB](https://reader033.fdocument.pub/reader033/viewer/2022053023/6054a2e53504357c2a6f121c/html5/thumbnails/10.jpg)
• Supóngase que quieren insertarse elementos con lassiguientes claves, en un árbol binario de búsqueda que seencuentra vació.
120 –87 – 43 – 90 – 140 – 99 – 130 – 22 – 56
Árbol binario de búsqueda(Inserción: Ejemplo 01)
Estr
uct
ura
s d
e d
ato
s1
0 Á
rbo
l bin
ario
de
bú
squ
eda
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
10
![Page 11: 10 Árbol binario de búsqueda - docencia.eafranco.com€¦ · Contenido •Árbol binario de búsqueda •Búsquedas •Inserción •Eliminación •Operaciones útiles en un ABB](https://reader033.fdocument.pub/reader033/viewer/2022053023/6054a2e53504357c2a6f121c/html5/thumbnails/11.jpg)
• Si se tiene la siguiente secuencia de inserción: 120 –87 – 43 – 90 – 140 – 99 – 130 – 22 – 56
120
87 140
43 130
56I
22
90
99
Árbol binario de búsqueda(Inserción: Ejemplo 02)
Estr
uct
ura
s d
e d
ato
s1
0 Á
rbo
l bin
ario
de
bú
squ
eda
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
11
![Page 12: 10 Árbol binario de búsqueda - docencia.eafranco.com€¦ · Contenido •Árbol binario de búsqueda •Búsquedas •Inserción •Eliminación •Operaciones útiles en un ABB](https://reader033.fdocument.pub/reader033/viewer/2022053023/6054a2e53504357c2a6f121c/html5/thumbnails/12.jpg)
• El árbol de búsqueda facilita el almacenamiento ybúsqueda de información contenida en susnodos, por medio de un campo clave.
• La búsqueda consiste en acceder a la raíz delárbol, si la clave del elemento a localizar coincidecon ésta la búsqueda ha concluido con éxito, si laclave del elemento es menor se busca en elsubárbol izquierdo y si es mayor en el derecho. Sise alcanza un nodo hoja y la clave no ha sidoencontrado se supone que no existe en el árbol.
Árbol binario de búsqueda (Búsquedas)
Estr
uct
ura
s d
e d
ato
s1
0 Á
rbo
l bin
ario
de
bú
squ
eda
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
12
![Page 13: 10 Árbol binario de búsqueda - docencia.eafranco.com€¦ · Contenido •Árbol binario de búsqueda •Búsquedas •Inserción •Eliminación •Operaciones útiles en un ABB](https://reader033.fdocument.pub/reader033/viewer/2022053023/6054a2e53504357c2a6f121c/html5/thumbnails/13.jpg)
• La búsqueda en un ABB es muy eficiente,representa una función logarítmica.
• El máximo número de comparaciones quenecesitaríamos para saber si un elemento seencuentra en un árbol binario de búsquedaestaría entre [log2(N+1)] y N, siendo N el númerode nodos.
• La búsqueda de una clave de elemento en unABB (Árbol Binario de Búsqueda) se puederealizar de dos formas, iterativa o recursiva.
Estr
uct
ura
s d
e d
ato
s1
0 Á
rbo
l bin
ario
de
bú
squ
eda
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
13
![Page 14: 10 Árbol binario de búsqueda - docencia.eafranco.com€¦ · Contenido •Árbol binario de búsqueda •Búsquedas •Inserción •Eliminación •Operaciones útiles en un ABB](https://reader033.fdocument.pub/reader033/viewer/2022053023/6054a2e53504357c2a6f121c/html5/thumbnails/14.jpg)
• Si se habla de un árbol binario completamentelleno este tendrá 2n-1 elementos, por lo que elorden de complejidad de la búsqueda será idealO(log2(N+1)).
Estr
uct
ura
s d
e d
ato
s1
0 Á
rbo
l bin
ario
de
bú
squ
eda
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
14
![Page 15: 10 Árbol binario de búsqueda - docencia.eafranco.com€¦ · Contenido •Árbol binario de búsqueda •Búsquedas •Inserción •Eliminación •Operaciones útiles en un ABB](https://reader033.fdocument.pub/reader033/viewer/2022053023/6054a2e53504357c2a6f121c/html5/thumbnails/15.jpg)
Buscar el 25
13
21
10 18 2540
33
Encontrado
Paso3
13
21
10 18 2540
33
¿El 25 es mayor o menor que el 21?
Paso1
NO “Ir por la derecha” 13
21
10 18 2540
33
¿El 25 es mayor o menor que el 33?
Paso2
SI ”Ir por la izquierda”
Árbol binario de búsqueda(Búsquedas: Ejemplo 01)
Estr
uct
ura
s d
e d
ato
s1
0 Á
rbo
l bin
ario
de
bú
squ
eda
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
15
![Page 16: 10 Árbol binario de búsqueda - docencia.eafranco.com€¦ · Contenido •Árbol binario de búsqueda •Búsquedas •Inserción •Eliminación •Operaciones útiles en un ABB](https://reader033.fdocument.pub/reader033/viewer/2022053023/6054a2e53504357c2a6f121c/html5/thumbnails/16.jpg)
• Debido a que al eliminar un nodo, no se deseaeliminar al subárbol de debajo de este, esnecesario realizar los siguientes casos:
1. Si el elemento a borrar es terminal (hoja)
2. Si el elemento a borrar tiene un solo hijo
3. Si el elemento a borrar tiene los dos hijos
Árbol binario de búsqueda (Eliminación)
Estr
uct
ura
s d
e d
ato
s1
0 Á
rbo
l bin
ario
de
bú
squ
eda
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
16
![Page 17: 10 Árbol binario de búsqueda - docencia.eafranco.com€¦ · Contenido •Árbol binario de búsqueda •Búsquedas •Inserción •Eliminación •Operaciones útiles en un ABB](https://reader033.fdocument.pub/reader033/viewer/2022053023/6054a2e53504357c2a6f121c/html5/thumbnails/17.jpg)
• Caso 1
• Si el elemento a borrar es terminal (hoja), simplemente se elimina.
6
2 8
3
1 4
Eliminar nodo hojaEliminar 3
Estr
uct
ura
s d
e d
ato
s1
0 Á
rbo
l bin
ario
de
bú
squ
eda
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
17
![Page 18: 10 Árbol binario de búsqueda - docencia.eafranco.com€¦ · Contenido •Árbol binario de búsqueda •Búsquedas •Inserción •Eliminación •Operaciones útiles en un ABB](https://reader033.fdocument.pub/reader033/viewer/2022053023/6054a2e53504357c2a6f121c/html5/thumbnails/18.jpg)
• Caso 2
• Si el elemento a borrar tiene un solo hijo, entonces tiene que ser sustituido por el hijo
6
2 8
3
1 4
Eliminar nodo con un hijoEliminar 4
Estr
uct
ura
s d
e d
ato
s1
0 Á
rbo
l bin
ario
de
bú
squ
eda
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
18
![Page 19: 10 Árbol binario de búsqueda - docencia.eafranco.com€¦ · Contenido •Árbol binario de búsqueda •Búsquedas •Inserción •Eliminación •Operaciones útiles en un ABB](https://reader033.fdocument.pub/reader033/viewer/2022053023/6054a2e53504357c2a6f121c/html5/thumbnails/19.jpg)
• Caso 3
• Si el elemento a borrar tiene los dos hijos,entonces se tienen que sustituir por el nodo:
1. Que se encuentra mas a la derecha en el subárbolizquierdo, o por el nodo
2. Que se encuentra mas a la izquierda en el subárbolderecho.
• Nota: Si el nodo sustituto tuviera un hijo, lo colocamos en lugarde este.
Estr
uct
ura
s d
e d
ato
s1
0 Á
rbo
l bin
ario
de
bú
squ
eda
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
19
![Page 20: 10 Árbol binario de búsqueda - docencia.eafranco.com€¦ · Contenido •Árbol binario de búsqueda •Búsquedas •Inserción •Eliminación •Operaciones útiles en un ABB](https://reader033.fdocument.pub/reader033/viewer/2022053023/6054a2e53504357c2a6f121c/html5/thumbnails/20.jpg)
7
3 8
4
1 5
6
7
4 8
1 5
6
Eliminar nodo con dos hijosEliminar 3
eliminar
copiarvalor
y eliminar
• Remplazar el dato del nodo que se desea eliminar con el dato del nodo más pequeño del subárbol derecho
• Después, eliminar el nodo más pequeño del subárbol derecho (caso fácil)
Árbol binario de búsqueda(Eliminación: Ejemplo 01)
Eligiendo sustituir por el más a la izquierda del
subárbol derecho. Estr
uct
ura
s d
e d
ato
s1
0 Á
rbo
l bin
ario
de
bú
squ
eda
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
20
![Page 21: 10 Árbol binario de búsqueda - docencia.eafranco.com€¦ · Contenido •Árbol binario de búsqueda •Búsquedas •Inserción •Eliminación •Operaciones útiles en un ABB](https://reader033.fdocument.pub/reader033/viewer/2022053023/6054a2e53504357c2a6f121c/html5/thumbnails/21.jpg)
Eliminar nodo con dos hijosEliminar 2
6
3 8
3
1 4
5
3.5
Árbol binario de búsqueda(Eliminación)
Eligiendo sustituir por el más a la izquierda del
subárbol derecho.6
2 8
3
1 4
5
3.5
• Remplazar el dato del nodoque se desea eliminar con eldato del nodo más pequeñodel subárbol derecho
• Importante aplicarnuevamente la regla al eliminaral nodo que remplaza, si estetiene un hijo.
Estr
uct
ura
s d
e d
ato
s1
0 Á
rbo
l bin
ario
de
bú
squ
eda
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
21
![Page 22: 10 Árbol binario de búsqueda - docencia.eafranco.com€¦ · Contenido •Árbol binario de búsqueda •Búsquedas •Inserción •Eliminación •Operaciones útiles en un ABB](https://reader033.fdocument.pub/reader033/viewer/2022053023/6054a2e53504357c2a6f121c/html5/thumbnails/22.jpg)
Operaciones útiles en un ABB(Contar nodos del ABB)
• El conocer el número de nodos en un árbol binariode búsqueda puede resultar útil para distintasaplicaciones de los mismos.
Si retomamos las operaciones hechas en C del árbol binario…
//Cuenta los nodos que hay a partir de una posición P
int CuentaNodos(arbol *a,posicion p)
{
if(NullNode(a,p))
{
return 0;
}
else
{
return (1+ CuentaNodos(a,RightSon(a,p)) + cuentaNodos(a,LeftSon(a,p));
}
}
Estr
uct
ura
s d
e d
ato
s1
0 Á
rbo
l bin
ario
de
bú
squ
eda
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
22
![Page 23: 10 Árbol binario de búsqueda - docencia.eafranco.com€¦ · Contenido •Árbol binario de búsqueda •Búsquedas •Inserción •Eliminación •Operaciones útiles en un ABB](https://reader033.fdocument.pub/reader033/viewer/2022053023/6054a2e53504357c2a6f121c/html5/thumbnails/23.jpg)
• El conocer la suma de los valores de las claves de losnodos en un árbol binario de búsqueda puederesultar útil para distintas aplicaciones de losmismos.
Operaciones útiles en un ABB(Sumar las claves de los nodos del ABB)
//Suma el valor de las claves de los nodos a partir de una posición
int SumaNodo(arbol *a, posicion p)
{
elemento e;
if(NullNode(a,p))
{
return 0;
}
else
{
e=ReadNode(a,p);
return e.clave+SumaNodo(a,RightSon(a,p))+SumaNodo(a,LeftSon(a,p));
}
}
Estr
uct
ura
s d
e d
ato
s1
0 Á
rbo
l bin
ario
de
bú
squ
eda
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
23
![Page 24: 10 Árbol binario de búsqueda - docencia.eafranco.com€¦ · Contenido •Árbol binario de búsqueda •Búsquedas •Inserción •Eliminación •Operaciones útiles en un ABB](https://reader033.fdocument.pub/reader033/viewer/2022053023/6054a2e53504357c2a6f121c/html5/thumbnails/24.jpg)
• El conocer la profundidad de un árbol o subárbolbinario de búsqueda puede resultar útil paradistintas aplicaciones de los mismos.
Operaciones útiles en un ABB(Calcular la profundidad del ABB)
//Calcula la profundidad de un árbol a partir de una posicion p
int Profundidad(arbol *a, posicion p)
{
if(NullNode(a,p))
return 0;
//Retornar la mayor profundidad (Derecha o Izquierda)
if (Profundidad(a,RightSon(a,p)) > Profundidad(a,LeftSon(a,p)))
return Profundidad(a,RightSon(a,p)) + 1;
else
return Profundidad(a,LeftSon(a,p) + 1;
}
Estr
uct
ura
s d
e d
ato
s1
0 Á
rbo
l bin
ario
de
bú
squ
eda
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
24
![Page 25: 10 Árbol binario de búsqueda - docencia.eafranco.com€¦ · Contenido •Árbol binario de búsqueda •Búsquedas •Inserción •Eliminación •Operaciones útiles en un ABB](https://reader033.fdocument.pub/reader033/viewer/2022053023/6054a2e53504357c2a6f121c/html5/thumbnails/25.jpg)
• El contar las hojas de un árbol binario de búsquedapuede resultar útil para distintas aplicaciones de losmismos.
//Cuenta hojas de un árbol a partir de una posición p
int ContarHojas(arbol *a, posicion p)
{
if(NullNode(a,p))
return 0;
else if(NullNode(a,LeftSon(a,p))) && (NullNode(a,RightSon(a,p)))
return 1;
else
return ContarHojas(a,LeftSon(a,p)))+ContarHojas(a,RightSon(a,p)));
}
Operaciones útiles en un ABB(Contar las hojas del ABB)
Estr
uct
ura
s d
e d
ato
s1
0 Á
rbo
l bin
ario
de
bú
squ
eda
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
25
![Page 26: 10 Árbol binario de búsqueda - docencia.eafranco.com€¦ · Contenido •Árbol binario de búsqueda •Búsquedas •Inserción •Eliminación •Operaciones útiles en un ABB](https://reader033.fdocument.pub/reader033/viewer/2022053023/6054a2e53504357c2a6f121c/html5/thumbnails/26.jpg)
• El orden de inserción de los datos, determina la forma delABB.
• Se tendrá el peor caso si se insertan los datos en formaordenada
• La forma del ABB determina la eficiencia del proceso debúsqueda.
13
10
18
21
25
Este árbol está desbalanceadoporque los valores se agregaron en el siguiente orden:10, 13, 18, 21, 25, 33, 40
Árbol binario de búsqueda (ABB) (Edgardo A. Franco)
Comentarios importantes
Estr
uct
ura
s d
e d
ato
s1
0 Á
rbo
l bin
ario
de
bú
squ
eda
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
26
![Page 27: 10 Árbol binario de búsqueda - docencia.eafranco.com€¦ · Contenido •Árbol binario de búsqueda •Búsquedas •Inserción •Eliminación •Operaciones útiles en un ABB](https://reader033.fdocument.pub/reader033/viewer/2022053023/6054a2e53504357c2a6f121c/html5/thumbnails/27.jpg)
Liga Web
• Inserta elimina y busca en un árbol binario
https://www.cs.usfca.edu/~galles/visualization/BST.html
Estr
uct
ura
s d
e d
ato
s1
0 Á
rbo
l bin
ario
de
bú
squ
eda
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
27