Leccion 5.1 Arboles Binarios
Transcript of Leccion 5.1 Arboles Binarios
-
8/8/2019 Leccion 5.1 Arboles Binarios
1/22
Leccion 5.1 ARBOLES BINARIOS
Definicin:
Un rbol Binario es un conjunto de finito de Elementos, de nombre Nodos de forma que:
El rbol Binario es Vaci si no tiene ningn elemento en el.
El rbol Binario contiene un Nodo Raz y los dos que parten de l, llamados Nodo Izquierdo y NodoDerecho.
Los rboles tiene 3 Recorridos Diferentes los cuales son:
Pre-Orden
In-Orden
Post-Orden
Pre-Orden
Definicin:
El Recorrido Pre-Orden lo recorre de la siguiente manera, viaje a travs del rbol Binariodesplegando el Contenido en la Raz, despus viaje a travs del Nodo Izquierdo y despus a travs del
Nodo Derecho.
Detalle:
Temp toma el Valor de la Raz y compara si el rbol tiene algn Elemento, de otra manera Desplegararbol Vaci y terminara el mtodo. Si el rbol tiene elementos dentro de l, lo recorrer y viajara atravs de los Arreglos Izq y Der para determinar que valor meter en la Pila y en Temp para de estamanera imprimir el siguiente Elemento correspondiente.
Algoritmo:
PreOrd(Arbol, Der, Izq, Pila, Raiz)
Temp Raiz
Top
Pila[Top] Nulo
ESTRUCTURA DE DATOS LECCION 5.1 ARBOLES BINARIOS Pgina 1
-
8/8/2019 Leccion 5.1 Arboles Binarios
2/22
-
8/8/2019 Leccion 5.1 Arboles Binarios
3/22
Corrida:
In-Orden
Definicin:
El Recorrido In-Orden lo recorre de la siguiente manera, viaje a travs del rbol Binario desplegandoel Contenido en el Nodo Izquierdo despus la Raz y finalmente viaja a travs del Nodo Derecho.
Detalle:
ESTRUCTURA DE DATOS LECCION 5.1 ARBOLES BINARIOS Pgina 3
http://www.programacionfacil.com/_detail/estructura_de_datos/image552.jpg?id=estructura_de_datos%3Aarbol_binariohttp://www.programacionfacil.com/_detail/estructura_de_datos/image593.jpg?id=estructura_de_datos%3Aarbol_binario -
8/8/2019 Leccion 5.1 Arboles Binarios
4/22
Temp toma el Valor de la Raz y compara si el rbol tiene algn Elemento, de otra manera Desplegararbol Vaci y terminara el mtodo. Si el rbol tiene elementos dentro de l, lo recorrer y viajara atravs de los Arreglos Izq y Der para determinar que valor meter en la Pila y en Temp para de estamanera imprimir el siguiente Elemento correspondiente.
Algoritmo:
PreOrd(Arbol, Der, Izq, Pila, Raiz)
Temp Raiz
Top
Pila[Top] Nulo
Si Raiz = Nulo
Imprmir Arbol Vacio y Salir
Etiqueta:
Mientras Temp Nulo
Top Top + 1
Pila[Top] Temp
Temp Izq[Temp]
Fin del ciclo
Temp Pila[Top]
Top Top - 1
Mientras Temp Nulo
Imprimir Arbol[Temp]
Si Der[Temp] Nulo
Temp Der[Temp]
Ir a Etiqueta
ESTRUCTURA DE DATOS LECCION 5.1 ARBOLES BINARIOS Pgina 4
-
8/8/2019 Leccion 5.1 Arboles Binarios
5/22
Temp Pila[Top]
Top Top - 1
Fin del ciclo
Salir
Diagrama:
Corrida:
ESTRUCTURA DE DATOS LECCION 5.1 ARBOLES BINARIOS Pgina 5
http://www.programacionfacil.com/_detail/estructura_de_datos/image553.jpg?id=estructura_de_datos%3Aarbol_binariohttp://www.programacionfacil.com/_detail/estructura_de_datos/image594.jpg?id=estructura_de_datos%3Aarbol_binario -
8/8/2019 Leccion 5.1 Arboles Binarios
6/22
In-Orden
Definicin:
El Recorrido In-Orden lo recorre de la siguiente manera, viaje a travs del rbol Binario desplegando
el Contenido en el Nodo Izquierdo despus el Nodo Derecho y finalmente viaja a travs de la Raiz.
Detalle:
Temp toma el Valor de la Raz y compara si el rbol tiene algn Elemento, de otra manera Desplegararbol Vaci y terminara el mtodo. Si el rbol tiene elementos dentro de l, lo recorrer y viajara atravs de los Arreglos Izq y Der para determinar que valor meter en la Pila y en Temp para de estamanera imprimir el siguiente Elemento correspondiente.
Algoritmo:
PostOrd(Arbol, Der, Izq, Pila, Raiz)
Temp Raiz
Top
Pila[Top] Nulo
Si Raiz = Nulo
Imprimir Arbol Vacio y Salir
Etiqueta:
Mientras Temp Nulo
Top Top + 1
Pila[Top] Temp
Si Der[Temp] Nulo
Top Top + 1
Pila[Top] - (Der[Temp])
Temp Izq[Temp]
Temp Pila[Top]
ESTRUCTURA DE DATOS LECCION 5.1 ARBOLES BINARIOS Pgina 6
-
8/8/2019 Leccion 5.1 Arboles Binarios
7/22
Top Top - 1
Fin del ciclo
Mientras Temp 0
Imprimir Arbol[Temp]
Si Arbol[Temp] = Info[Raiz]
Salir
Temp Pila[Top]
Top Top - 1
Fin del ciclo
Si Temp < 0
Temp = -(Temp)
Ir a Etiqueta
Salir
Diagrama:
ESTRUCTURA DE DATOS LECCION 5.1 ARBOLES BINARIOS Pgina 7
-
8/8/2019 Leccion 5.1 Arboles Binarios
8/22
Corrida:
Bsqueda
Definicin:
La Bsqueda es Similar a todas los Mtodos anteriores de Bsqueda, simplemente efecta un recorridocomparando el Elemento que deseas encontrar contra cada uno de los Elementos en los Arreglos.
Detalle:
El Algoritmo de Bsqueda compara el Elemento a buscar con cada uno de los datos de nuestro rbol,compara si el Elemento con el Nodo Raz, si no se encuentra en la Raz compara Elemento contra la
ESTRUCTURA DE DATOS LECCION 5.1 ARBOLES BINARIOS Pgina 8
http://www.programacionfacil.com/_detail/estructura_de_datos/image554.jpg?id=estructura_de_datos%3Aarbol_binariohttp://www.programacionfacil.com/_detail/estructura_de_datos/image595.jpg?id=estructura_de_datos%3Aarbol_binario -
8/8/2019 Leccion 5.1 Arboles Binarios
9/22
Raz para empezar a viajar por el rbol respectivamente, usa un mtodo similar al anterior hastaencontrar el Elemento. De otra forma la bsqueda es fallida.
Algoritmo:
Busqueda(Arbol, Der, Izq, Pila, Raiz, Elem)
Si Raiz = Nulo
Imprimir Arbol Vacio
Pos Nulo
Pad Nulo
Regresar Pos y Pad
Salir
Si Elem = Arbol[Raiz]
Imprimir Elemento Encontrado
Pos Raiz
Pad Nulo
Regresar Pos y Pad
Salir
Si Elem < Arbol[Raiz]
Temp Izq[Raiz]
Temp2 Raiz
Si no:
Temp Der[Raiz]
Temp2 Raiz
Mientras Temp Nulo
ESTRUCTURA DE DATOS LECCION 5.1 ARBOLES BINARIOS Pgina 9
-
8/8/2019 Leccion 5.1 Arboles Binarios
10/22
Si Elem = Arbol[Temp]
Imprimir Elemento Encontrado
Pos Temp
Pad Temp2
Regresar Pos y Pad
Salir
Si Elem < Arbol[Temp]
Temp2 Temp
Temp Izq[Temp]
Si no:
Temp2 Temp
Temp Der[Temp]
Fin del ciclo
Imprimir Elemento no Encontrado
Pos Nulo
Pad Temp2
Regresar Pos y Pad
Salir
Diagrama:
ESTRUCTURA DE DATOS LECCION 5.1 ARBOLES BINARIOS Pgina 10
-
8/8/2019 Leccion 5.1 Arboles Binarios
11/22
Corrida:
Programa click here:
ESTRUCTURA DE DATOS LECCION 5.1 ARBOLES BINARIOS Pgina 11
http://www.programacionfacil.com/estructura_de_datos/programa_arbol_binariohttp://www.programacionfacil.com/_detail/estructura_de_datos/image555.jpg?id=estructura_de_datos%3Aarbol_binariohttp://www.programacionfacil.com/_detail/estructura_de_datos/image596.jpg?id=estructura_de_datos%3Aarbol_binariohttp://www.programacionfacil.com/estructura_de_datos/programa_arbol_binario -
8/8/2019 Leccion 5.1 Arboles Binarios
12/22
#include
#include
class Arbol
{
private:
int Top,Pila[10];
int Info[10],Izq[10],Der[10],Raiz,Disp;
public:
Arbol()
{
int in[10]={0,0,0,0,0,0,0,0,0,0};
for(int i=0;i
-
8/8/2019 Leccion 5.1 Arboles Binarios
13/22
{
cout
-
8/8/2019 Leccion 5.1 Arboles Binarios
14/22
if(Raiz==-999)
{
cout
-
8/8/2019 Leccion 5.1 Arboles Binarios
15/22
Top=0;
Pila[0]=-999;
if(Raiz==-999)
{
cout
-
8/8/2019 Leccion 5.1 Arboles Binarios
16/22
-
8/8/2019 Leccion 5.1 Arboles Binarios
17/22
else
{
Temp=Der[Raiz];
Temp2=Raiz;
}
while(Temp!=-999)
{
if(Elem==Info[Temp])
{
cout
-
8/8/2019 Leccion 5.1 Arboles Binarios
18/22
}
void InsOrd(int Elem)
{
int PosPad[2],Temp;
if(Disp!=-999)
{
Busqueda(PosPad,Elem);
clrscr();
if(PosPad[0]!=-999)
{
cout
-
8/8/2019 Leccion 5.1 Arboles Binarios
19/22
}
void Eliminar(int Elem)
{
int PosPad[2];
Busqueda(PosPad,Elem);
clrscr();
if(PosPad[0]==-999)
{
cout
-
8/8/2019 Leccion 5.1 Arboles Binarios
20/22
{
if(PosPad[0]==Izq[PosPad[1]])
Izq[PosPad[1]]=Temp;
else
Der[PosPad[1]]=Temp;
}
else
Raiz=Temp;
}
void CasoB(int PosPad[2])
{
int PosPad2[2],Temp=Der[PosPad[0]],Temp2=PosPad[0];
while(Izq[Temp]!=-999)
{
Temp2=Temp;
Temp=Izq[Temp];
}
PosPad2[0]=Temp;
PosPad2[1]=Temp2;
CasoA(PosPad2);
if(PosPad[1]!=-999)
{
if(PosPad[0]==Izq[PosPad[1]])
Izq[PosPad[1]]=PosPad2[0];
else
Der[PosPad[1]]=PosPad2[0];
}
else
Raiz=PosPad2[0];
ESTRUCTURA DE DATOS LECCION 5.1 ARBOLES BINARIOS Pgina 20
-
8/8/2019 Leccion 5.1 Arboles Binarios
21/22
Izq[PosPad2[0]]=Izq[PosPad[0]];
Der[PosPad2[0]]=Der[PosPad[0]];
}
}tec;
main()
{
int PosPad[2],res,op=0;
while(op!=7)
{
clrscr();
cout
-
8/8/2019 Leccion 5.1 Arboles Binarios
22/22
cin>>res;
tec.Busqueda(PosPad,res);
break;
case 5:
cout