Leccion 5.1 Arboles Binarios

download Leccion 5.1 Arboles Binarios

of 22

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