Anda di halaman 1dari 15

RBOL BINARIO DE

BSQUEDA
EQUIPO 1
INTEGRANTES:
MORALES NAVA HUGO ANTONIO
TORRES RODRGUEZ DANIEL
URBINA SEVERIANO HUGO ENRIQUE
1
Que es un ABB?
Se pueden buscar en ellos un trmino utilizando un
algoritmo de bsqueda binaria similar al empleado en
los [arrays].
Es aquel que dado un nodo, todos los datos del
subrbol izquierdo son menores que los datos de ese
nodo, mientras que todos los datos del subrbol
derecho son mayores que sus propios datos.
2
Ejemplo
3
Creacin de un rbol binario de
bsqueda
Se desea almacenar los nmeros


8 3 1 20 10 5 4

en un rbol binario de bsqueda
4
Nodo de un rbol binario de
bsqueda
class Nodo {
protected:
int nummat;
char nombre[30];
Nodo *izdo, *dcho;
public:
//...
};
5
class ArbolBinario
{
protected:
Nodo *raiz;
public:
//...
};
EJEMPLO DE CREACION EN C++
OPERACIONES EN UN ABB
Bsqueda de un nodo. Devuelve la referencia al
nodo del rbol, o NULL.
Insercin de un nodo. Crea un nodo con su dato
asociado y lo aade, en orden, al rbol.
Borrado de un nodo. Busca el nodo del rbol que
contiene un dato y lo quita del rbol. El rbol
debe seguir siendo de bsqueda.
Recorrido de un rbol. Los mismos recorridos de un
rbol binario preorden, inorden y postorden.
6
RECURSIVIDAD
BUSQUEDA
Comienza en el nodo raz y sigue estos pasos:
1. La clave buscada se compara con la clave del nodo raz.
2. Si las claves son iguales, la bsqueda se detiene.
3. Si la clave buscada es mayor que la clave raz, la bsqueda se reanuda en el
subrbol derecha. Si la clave buscada es menor que la clave raz, la bsqueda
se reanuda con el subrbol izquierdo.
7
Implementacin
Cdigo de la funcin pblica buscar()de la clase ArbolBinario

Nodo* ArbolBinario::buscar(Tipoelemento buscado)
{
return buscar(raiz, buscado);
}
8
Cdigo de la funcin pblica buscar()de la clase ArbolBinario
Nodo* arbolBinario::buscar(Nodo* raizSub, Tipoelemento buscado)
{
if (raizSub == NULL)
return NULL;
else if (buscado == raizSub->valorNodo())
return raizSub;
else if (buscado < raizSub->valorNodo())
return buscar(raizSub->subarbolIzdo(), buscado);
else
return buscar (raizSub->subarbolDcho(), buscado);
}
Insertar un nodo
9
Se apoya en el algoritmo de bsqueda; para insertar un nodo
nicamente se agrega la insercin al final de la bsqueda.
Implementacin
void ArbolBinario::insertar (Tipoelemento valor)
{
raiz = insertar(raiz, valor);
}

Nodo* ArbolBinario::insertar(Nodo* raizSub, Tipoelemento
dato)
{
if (raizSub == NULL)
raizSub = new Nodo(dato);
else if (dato < raizSub->valorNodo())
{
Nodo *iz;
iz = insertar(raizSub->subarbolIzdo(), dato);
raizSub->ramaIzdo(iz);
}
else if (dato > raizSub->valorNodo())
{
Nodo *dr;
dr = insertar(raizSub->subarbolDcho(), dato);
raizSub->ramaDcho(dr);
}
else
throw "Nodo duplicado"; // tratamiento de repeticin
return raizSub;
}
10
Eliminar un nodo
Su algoritmo es mas complejo.
Los pasos a seguir son:
1. Buscar en el rbol la posicin de nodo a eliminar.
2. Si el nodo a suprimir tiene menos de dos hijos, reajustar los
enlaces de su antecesor.
3. Si el nodo tiene dos hijos (rama izquierda y derecha), es
necesario subir a la posicin que ste ocupa el dato ms prximo
de sus subrboles (el mas cercano a la izq. o el mas cercano a la
dcha.) con el fin de mantener la estructura rbol binario de
bsqueda.
11
12
NODO SIN HIJOS
NODO SUBRAIZ CON HIJOS
Implementacin
13
Implementacin
14
Conclusin
Un ABB tiene mximo 2 Hijos
Los ABB se utilizan para mantener colecciones de
datos(Bases de Datos).
Es importante conocer el algoritmo de Bsqueda
Binaria en un rbol, ya que los algoritmos de
Insercin y eliminacin se basan en dicho
algoritmo.
15

Anda mungkin juga menyukai