ÁRBOLES BINARIOS DE BÚSQUEDA. Un Árbol Binario de Búsqueda (ABB) es un árbol binario que...
-
Upload
joaquin-gallardo -
Category
Documents
-
view
240 -
download
1
Transcript of ÁRBOLES BINARIOS DE BÚSQUEDA. Un Árbol Binario de Búsqueda (ABB) es un árbol binario que...
![Page 1: ÁRBOLES BINARIOS DE BÚSQUEDA. Un Árbol Binario de Búsqueda (ABB) es un árbol binario que contiene información ordenada según una llave (valor) de búsqueda.](https://reader035.fdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff2b7/html5/thumbnails/1.jpg)
ÁRBOLES BINARIOSDE BÚSQUEDA
![Page 2: ÁRBOLES BINARIOS DE BÚSQUEDA. Un Árbol Binario de Búsqueda (ABB) es un árbol binario que contiene información ordenada según una llave (valor) de búsqueda.](https://reader035.fdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff2b7/html5/thumbnails/2.jpg)
ÁRBOLES BINARIOS DE BÚSQUEDA
Un Árbol Binario de Búsqueda (ABB) es un árbol binario que contiene información ordenada según una llave (valor) de búsqueda
En un ABB, para todo nodo n, las llaves del subárbol izquierdo son menores que la llave del nodo n y la llave del nodo n es menor que las llaves del subárbol derecho
![Page 3: ÁRBOLES BINARIOS DE BÚSQUEDA. Un Árbol Binario de Búsqueda (ABB) es un árbol binario que contiene información ordenada según una llave (valor) de búsqueda.](https://reader035.fdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff2b7/html5/thumbnails/3.jpg)
ÁRBOLES BINARIOS DE BÚSQUEDA
Gráficamente
![Page 4: ÁRBOLES BINARIOS DE BÚSQUEDA. Un Árbol Binario de Búsqueda (ABB) es un árbol binario que contiene información ordenada según una llave (valor) de búsqueda.](https://reader035.fdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff2b7/html5/thumbnails/4.jpg)
ÁRBOLES BINARIOS DE BÚSQUEDA
En un ABB, el recorrido Enorden genera una secuencia en orden ascendente según la llave
Enorden(T1) = A, B, C, D, E, F, H
T1 =
![Page 5: ÁRBOLES BINARIOS DE BÚSQUEDA. Un Árbol Binario de Búsqueda (ABB) es un árbol binario que contiene información ordenada según una llave (valor) de búsqueda.](https://reader035.fdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff2b7/html5/thumbnails/5.jpg)
ÁRBOLES BINARIOS DE BÚSQUEDA
Ejercicio: Obtener Enorden(T2)
T2 =
![Page 6: ÁRBOLES BINARIOS DE BÚSQUEDA. Un Árbol Binario de Búsqueda (ABB) es un árbol binario que contiene información ordenada según una llave (valor) de búsqueda.](https://reader035.fdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff2b7/html5/thumbnails/6.jpg)
ÁRBOLES BINARIOS DE BÚSQUEDA
Representación
T1 =
T1 =
![Page 7: ÁRBOLES BINARIOS DE BÚSQUEDA. Un Árbol Binario de Búsqueda (ABB) es un árbol binario que contiene información ordenada según una llave (valor) de búsqueda.](https://reader035.fdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff2b7/html5/thumbnails/7.jpg)
OPERACIONES SOBRE ABB´s
Búsqueda
Inserción
Eliminación
![Page 8: ÁRBOLES BINARIOS DE BÚSQUEDA. Un Árbol Binario de Búsqueda (ABB) es un árbol binario que contiene información ordenada según una llave (valor) de búsqueda.](https://reader035.fdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff2b7/html5/thumbnails/8.jpg)
BÚSQUEDA EN ABB´s
Búsqueda de una llave k en un ABB T Si T , k no existe Si T , se compara k con la llave x al
interior del nodo apuntado por T Si k x, la búsqueda termina Si k x, la búsqueda continúa en el
subárbol izquierdo de T Si k x, la búsqueda continúa en el
subárbol derecho de T
![Page 9: ÁRBOLES BINARIOS DE BÚSQUEDA. Un Árbol Binario de Búsqueda (ABB) es un árbol binario que contiene información ordenada según una llave (valor) de búsqueda.](https://reader035.fdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff2b7/html5/thumbnails/9.jpg)
BÚSQUEDA EN ABB´s
Búsqueda de la llave 13 en el ABB T
Se compara 13 con 10 buscar en Td
Se compara 13 con 14 buscar en Ti
Se compara 13 con 12 buscar en Td
Se encontró la llave 13
T =
![Page 10: ÁRBOLES BINARIOS DE BÚSQUEDA. Un Árbol Binario de Búsqueda (ABB) es un árbol binario que contiene información ordenada según una llave (valor) de búsqueda.](https://reader035.fdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff2b7/html5/thumbnails/10.jpg)
INSERCIÓN EN ABB´s
En un ABB T, el nodo que contendrá una nueva llave k siempre se inserta como hoja
T se crea el nodo para k T se compara k con la llave
x al interior del nodo apuntado por T Si k x, se avanza por el subárbol
izquierdo de T Si k x, se avanza por el subárbol
derecho de T
![Page 11: ÁRBOLES BINARIOS DE BÚSQUEDA. Un Árbol Binario de Búsqueda (ABB) es un árbol binario que contiene información ordenada según una llave (valor) de búsqueda.](https://reader035.fdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff2b7/html5/thumbnails/11.jpg)
INSERCIÓN EN ABB´s
Insertar, en un ABB T inicialmente vacío, las llaves 10, 8, 14, 12, 9, 17, 5, 7, 11, 16, 13, 3 y 21
T =
![Page 12: ÁRBOLES BINARIOS DE BÚSQUEDA. Un Árbol Binario de Búsqueda (ABB) es un árbol binario que contiene información ordenada según una llave (valor) de búsqueda.](https://reader035.fdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff2b7/html5/thumbnails/12.jpg)
ELIMINACIÓN EN ABB´s
La eliminación de una llave k, en un ABB T, distingue tres situaciones
No existe un nodo con llave k El nodo con llave k tiene, a lo más, un
hijo El nodo con llave k tiene dos hijos.
Luego Se reemplaza de k por m (mayor de
las llaves del subárbol izquierdo ó menor de las llaves del subárbol derecho) y se elimina el nodo que la contiene
![Page 13: ÁRBOLES BINARIOS DE BÚSQUEDA. Un Árbol Binario de Búsqueda (ABB) es un árbol binario que contiene información ordenada según una llave (valor) de búsqueda.](https://reader035.fdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff2b7/html5/thumbnails/13.jpg)
ELIMINACIÓN EN ABB´s
Eliminación de una llave k contenida en un nodo hoja
![Page 14: ÁRBOLES BINARIOS DE BÚSQUEDA. Un Árbol Binario de Búsqueda (ABB) es un árbol binario que contiene información ordenada según una llave (valor) de búsqueda.](https://reader035.fdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff2b7/html5/thumbnails/14.jpg)
ELIMINACIÓN EN ABB´s
Al eliminar las llaves k = 4 y k = 6, cada una contenida en un nodo con un único hijo,
T =
![Page 15: ÁRBOLES BINARIOS DE BÚSQUEDA. Un Árbol Binario de Búsqueda (ABB) es un árbol binario que contiene información ordenada según una llave (valor) de búsqueda.](https://reader035.fdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff2b7/html5/thumbnails/15.jpg)
ELIMINACIÓN EN ABB´s
Resulta el siguiente nuevo ABB
T =
![Page 16: ÁRBOLES BINARIOS DE BÚSQUEDA. Un Árbol Binario de Búsqueda (ABB) es un árbol binario que contiene información ordenada según una llave (valor) de búsqueda.](https://reader035.fdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff2b7/html5/thumbnails/16.jpg)
ELIMINACIÓN EN ABB´s
Al eliminar la llave k = 8, contenida en un nodo con dos hijos,
T =
![Page 17: ÁRBOLES BINARIOS DE BÚSQUEDA. Un Árbol Binario de Búsqueda (ABB) es un árbol binario que contiene información ordenada según una llave (valor) de búsqueda.](https://reader035.fdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff2b7/html5/thumbnails/17.jpg)
ELIMINACIÓN EN ABB´s
Debe ser remplazada por la mayor de las llaves del subárbol izquierdo,
T =
![Page 18: ÁRBOLES BINARIOS DE BÚSQUEDA. Un Árbol Binario de Búsqueda (ABB) es un árbol binario que contiene información ordenada según una llave (valor) de búsqueda.](https://reader035.fdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff2b7/html5/thumbnails/18.jpg)
ELIMINACIÓN EN ABB´s
Ó, ser remplazada por la menor de las llaves del subárbol derecho
T =
![Page 19: ÁRBOLES BINARIOS DE BÚSQUEDA. Un Árbol Binario de Búsqueda (ABB) es un árbol binario que contiene información ordenada según una llave (valor) de búsqueda.](https://reader035.fdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff2b7/html5/thumbnails/19.jpg)
LA CLASE ABB
#include <cstdlib>#include <iostream>using namespace std;typedef int Base;typedef char Clave;struct Elemento{ Clave key; Base info;}; struct Nodo { Clave key; Base info; Nodo *izq; Nodo *der;};
![Page 20: ÁRBOLES BINARIOS DE BÚSQUEDA. Un Árbol Binario de Búsqueda (ABB) es un árbol binario que contiene información ordenada según una llave (valor) de búsqueda.](https://reader035.fdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff2b7/html5/thumbnails/20.jpg)
LA CLASE ABB
typedef Nodo *Arbol;class Abb { private: Arbol B; Base Busca(Arbol, Clave); void Inserta(Arbol &, Elemento); Arbol Menor(Arbol &); Arbol Mayor(Arbol &); void Elimina(Arbol &, Clave); void VeAbb(Arbol);
![Page 21: ÁRBOLES BINARIOS DE BÚSQUEDA. Un Árbol Binario de Búsqueda (ABB) es un árbol binario que contiene información ordenada según una llave (valor) de búsqueda.](https://reader035.fdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff2b7/html5/thumbnails/21.jpg)
LA CLASE ABB
public: Abb(); bool Vacio(); Base Buscar(Clave); bool Existe(Clave); Clave GetKey(); Base GetInf(); Elemento GetMenor(); void Insertar(Elemento); void Eliminar(Clave); void VerAbb(); void CrearAbb();};
![Page 22: ÁRBOLES BINARIOS DE BÚSQUEDA. Un Árbol Binario de Búsqueda (ABB) es un árbol binario que contiene información ordenada según una llave (valor) de búsqueda.](https://reader035.fdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff2b7/html5/thumbnails/22.jpg)
LA CLASE ABB
Base Abb::Busca(Arbol T, Clave k) { if (T == NULL) return -1; else if (k < T->key) return Busca(T->izq, k); else if (k > T->key) return Busca(T->der, k); else return T->info;}
![Page 23: ÁRBOLES BINARIOS DE BÚSQUEDA. Un Árbol Binario de Búsqueda (ABB) es un árbol binario que contiene información ordenada según una llave (valor) de búsqueda.](https://reader035.fdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff2b7/html5/thumbnails/23.jpg)
LA CLASE ABB
void Abb::Inserta(Arbol &T, Elemento e) { if (T == NULL) { T = new Nodo; T->key = e.key; T->info = e.info; T->izq = NULL; T->der = NULL; } else if (e.key < T->key) Inserta(T->izq, e); else if (e.key > T->key) Inserta(T->der, e);}
![Page 24: ÁRBOLES BINARIOS DE BÚSQUEDA. Un Árbol Binario de Búsqueda (ABB) es un árbol binario que contiene información ordenada según una llave (valor) de búsqueda.](https://reader035.fdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff2b7/html5/thumbnails/24.jpg)
LA CLASE ABB
Arbol Abb::Menor(Arbol &S) { if (S->izq != NULL) return Menor(S->izq); else return S;}Arbol Abb::Mayor(Arbol &S) { if (S->der != NULL) return Mayor(S->der); else { Arbol p = S; S = S->izq; return p; }}
![Page 25: ÁRBOLES BINARIOS DE BÚSQUEDA. Un Árbol Binario de Búsqueda (ABB) es un árbol binario que contiene información ordenada según una llave (valor) de búsqueda.](https://reader035.fdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff2b7/html5/thumbnails/25.jpg)
LA CLASE ABB
void Abb::Elimina(Arbol &T, Clave k) { Arbol q; if (T != NULL) if (k == T->key) { q = T; if (T->der == NULL) T = T->izq; else if (T->izq == NULL) T = T->der; else { q = Mayor(T->izq); T->key = q->key; T->info = q->info; }
![Page 26: ÁRBOLES BINARIOS DE BÚSQUEDA. Un Árbol Binario de Búsqueda (ABB) es un árbol binario que contiene información ordenada según una llave (valor) de búsqueda.](https://reader035.fdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff2b7/html5/thumbnails/26.jpg)
LA CLASE ABB
delete q; } else if (k < T->key) Elimina(T->izq, k); else if (k > T->key) Elimina(T->der, k);}
![Page 27: ÁRBOLES BINARIOS DE BÚSQUEDA. Un Árbol Binario de Búsqueda (ABB) es un árbol binario que contiene información ordenada según una llave (valor) de búsqueda.](https://reader035.fdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff2b7/html5/thumbnails/27.jpg)
LA CLASE ABB
void Abb ::VeAbb(Arbol T) { if (T != NULL) { VeAbb(T->izq); cout << "Clave: " << T->key << " Info: " << T-
>info << endl; VeAbb(T->der); }}Abb::Abb() { B = NULL;}
![Page 28: ÁRBOLES BINARIOS DE BÚSQUEDA. Un Árbol Binario de Búsqueda (ABB) es un árbol binario que contiene información ordenada según una llave (valor) de búsqueda.](https://reader035.fdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff2b7/html5/thumbnails/28.jpg)
LA CLASE ABB
bool Abb::Vacio() { return B == NULL;}bool Abb::Existe(Clave k) { return Busca(B, k) != -1; }Clave Abb::GetKey() { return B->key; }Base Abb::GetInf() { return B->info; }
![Page 29: ÁRBOLES BINARIOS DE BÚSQUEDA. Un Árbol Binario de Búsqueda (ABB) es un árbol binario que contiene información ordenada según una llave (valor) de búsqueda.](https://reader035.fdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff2b7/html5/thumbnails/29.jpg)
LA CLASE ABB
Elemento Abb::GetMenor() { Arbol q; Elemento e; q = Menor(B); e.key = q->key; e.info = q->info; return e; }
![Page 30: ÁRBOLES BINARIOS DE BÚSQUEDA. Un Árbol Binario de Búsqueda (ABB) es un árbol binario que contiene información ordenada según una llave (valor) de búsqueda.](https://reader035.fdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff2b7/html5/thumbnails/30.jpg)
LA CLASE ABB
Base Abb::Buscar(Clave k) { return Busca(B, k); }void Abb::Insertar(Elemento e) { Inserta(B, e); }void Abb::Eliminar(Clave k) { Elimina(B, k);}void Abb::VerAbb() { VeAbb(B);}
![Page 31: ÁRBOLES BINARIOS DE BÚSQUEDA. Un Árbol Binario de Búsqueda (ABB) es un árbol binario que contiene información ordenada según una llave (valor) de búsqueda.](https://reader035.fdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff2b7/html5/thumbnails/31.jpg)
LA CLASE ABB
void Abb::CrearAbb() { Elemento e; int i; cout << "Ingrese un entero: "; cin >> i; while(i != 0) { e.info = i; cout << "Ingrese una letra: "; cin >> e.key; Inserta(B, e); cout << "Ingrese un entero: "; cin >> i; } cout << endl;}
![Page 32: ÁRBOLES BINARIOS DE BÚSQUEDA. Un Árbol Binario de Búsqueda (ABB) es un árbol binario que contiene información ordenada según una llave (valor) de búsqueda.](https://reader035.fdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff2b7/html5/thumbnails/32.jpg)
LA CLASE ABB
EjercicioSe dispone de dos Abb’s T1, T2. Implementar la función Unir(T1, T2), correspondiente a las operaciones T1 = T1T2 y T2 = .
void Unir(Abb &T1, Abb &T2){ Elemento e; if(!T2.Vacio()) { e.key = T2.GetKey(); e.info = T2.GetInf(); T1.Insertar(e); T2.Eliminar(e.key); Unir(T1,T2); }}