lunes

2. ÁRBOL BINARIO

"CÓDIGO DE PROGRAMACIÓN C++"


/* Universidad Autonama del Estado de Mexico */
/* Centro Universitario UAEM Atlacomulco */
/* Author: Juan Carlos Celestino Guillermo */
/* Grupo: ICO-19 */
/* Materia: Automatas y lenguajes formales */
/* Este programa realiza la funcion de crear un arbol binario,
   imprime la estructura del arbol, ordena el recorrido In-orden,
   Pre-orden y Post-Orden */

#include <iostream>
#include <cstdlib>
#include <conio.h>
#include <stdio.h>
using namespace std;

void elegir();
void menu();
int opcion;

int main (int argc, char** argv) {
     do{
          elegir();
          switch(opcion){
                case 1:
                    menu();
                    break;
                case 2:
                    cout << "\n\t\t\t ---- SALIR ---- " << endl;
                    break;
                default:
                    cout << "\n\t\t\t ---- OPCION NO VALIDA ---- " << endl;
                    cout << "__________________________________________" << endl;
                    break; 
          }
     }while(opcion != 2);
     return 0;
}

void elegir(){
     cout << "\n\t\t -------------------------------------------";
     printf( "\n\t\t| MATERIA: AUTOMATAS Y LENGUAJES FORMALES. %c|\n" , 169 );
     printf( "\t\t| ALUMNO: JUAN CARLOS CELESTINO GUILLERMO. %c|\n" , 184 );
     printf( "\t\t|\t\tGRUPO: ICO-19 \t\t    |\n" );
     printf( "\t\t|\t\t 2o SEMESTRE\t\t    |\n" );
     cout << "\t\t -------------------------------------------" << endl;
     cout << "\nDESEA CREAR UN NUEVO ARBOL BINARIO?: " << endl;
     cout << "\t 1.- SI. " << endl;
     cout << "\t 2.- NO (SALIR)." << endl;
     cout << "\nINTRODUCE EL NUMERO DE LA OPCION: ";
     cin >> opcion;
     cout <<"__________________________________________________________" << endl;
     return;
}

struct nodo {
     int numero;
     struct nodo *izq, *der;
};
typedef struct nodo *ArbolBinario;

ArbolBinario crear_Nodo ( int x ) {
     ArbolBinario nuevo_Nodo = new ( struct nodo );
     nuevo_Nodo -> numero = x;
     nuevo_Nodo -> izq = NULL;
     nuevo_Nodo -> der = NULL;
     return nuevo_Nodo;
}

void insertar ( ArbolBinario & arbol, int x ) {
     if ( arbol == NULL ){
           arbol = crear_Nodo ( x );
     }
     else if ( x < arbol -> numero )
          insertar ( arbol -> izq, x );
     else if ( x > arbol -> numero )
          insertar ( arbol -> der, x );
}

void in_Orden ( ArbolBinario arbol ) {
     if ( arbol != NULL ) {
          in_Orden ( arbol -> izq );
          cout << arbol -> numero << ", " ;
          in_Orden ( arbol -> der );
     }
}

void pre_Orden ( ArbolBinario arbol ) {
     if ( arbol != NULL ) {
          cout << arbol -> numero <<", ";
          pre_Orden ( arbol -> izq ) ;
          pre_Orden ( arbol -> der ) ;
     }
}
 
void post_Orden ( ArbolBinario arbol ) {
     if ( arbol != NULL ) {
          post_Orden ( arbol -> izq );
          post_Orden ( arbol -> der );
          cout << arbol -> numero << ", ";
     }
}

void imprimir_Arbol ( ArbolBinario arbol, int n ) {
     if ( arbol == NULL )
          return;
     imprimir_Arbol ( arbol -> der, n+1 ) ;
     for ( int i = 0; i < n; i++)
         cout<<"-----";
     cout << arbol -> numero << endl;
     imprimir_Arbol ( arbol -> izq, n+1 ) ;
}

void menu(){
    ArbolBinario arbol = NULL;
    int n;
    int x;
    int si, no;
    cout << "\n\n\t\t\t  >>>>> ARBOL BINARIO <<<<<  \n\n";
    cout << "INGRESA EL NUMERO DE NODOS DEL ARBOL A REALIZAR: ";
    cin >> n;
    cout << endl;
    for(int i = 0; i < n; i++ ){
        cout << "INTRODUCE EL NUMERO DEL NODO [ " << i+1 << " ]: ";
        cin >> x;
        insertar( arbol, x );
    }
    cout << "\n\tESTRUCTURA DEL ARBOL BINARIO \n\n";
    imprimir_Arbol ( arbol, 0 );
    cout << "\nRECORRIDOS DEL ARBOL BINARIO\n";
    cout << "\nIn-orden: ";
    in_Orden ( arbol );
    cout << "\nPre-Orden: ";
    pre_Orden ( arbol );
    cout << "\nPost-Orden: ";
    post_Orden ( arbol );
    cout <<"\n_________________________________________________________" << endl;
    return;

}

"PANTALLA DE SALIDA .EXE"

No hay comentarios.:

Publicar un comentario