jueves, 26 de enero de 2012

Código Árbol Binario

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <windows.h>

struct arbol{
int info;
struct arbol *izq;
struct arbol *der;
};

typedef struct arbol nodo;
typedef nodo *aPTR;
void insertar(aPTR*LOPTR, int n);
void imprimir(aPTR LOPTR);
void menu();

main()
{
aPTR LOPTR=NULL;
int i, opc;
menu(),
printf(" \n");
scanf("%d",&opc);
while(opc!=3){
    switch(opc)
{
    case 1:{
            printf("\n Insertar elemento: ");
            scanf("%d",&i);
            insertar(&LOPTR,i);
               system("cls");
            menu();
            break;    }
           
    case 2: {
            printf("\n");
            imprimir(LOPTR);
            getch();
            system("cls");
            menu();
            break; }
           
    case 3: {
            printf("¡ADIOS!");
            getch();
            break; }
default:
printf("\nERROR EN LA SELECCION\n");
getch();
system("cls");
menu();
break;
}
printf("\n Selecciona una Opcion: ");
scanf("%d",&opc);
}
}
void menu()
{
printf("\n*********** ARBOLES BINARIOS ***********");
printf(" \nSeleccione una opcion:\n");
printf("\n 1 Insertar elemento");
printf("\n 2 Imprimir elementos");
printf("\n 3 Salir\n\n");
}
void insertar(aPTR*r,int x)
{
aPTR nuevo,ant,actual;
nuevo=(arbol*)malloc(sizeof(arbol));
if(nuevo!=NULL)
{
nuevo->info=x;
nuevo->der=NULL;
nuevo->izq=NULL;
ant=NULL;
actual=*r;
printf("%d",nuevo->info);
while(actual!=NULL && x>actual->info)
{
ant=actual;
actual=actual->izq;
}
if(ant==NULL)
{
nuevo->izq=*r;
*r=nuevo;
}
else
{
ant->izq=nuevo;
nuevo->izq=actual;
}
}
}
void imprimir(aPTR actual)
{
if(actual==NULL)
printf("\n Arbol vacio, inserta un valor ... \n\n");
else
{
printf("\n Contenido del arbol: ");
while(actual!=NULL)
{
printf("\n\n| Izquierda: %d | ",actual->info);
actual=actual->izq;
printf("Centro: %d |",actual->info);
actual=actual->izq;
printf(" Derecha: %d |",actual->info);
actual=actual->izq;

}
}
}

1 comentario:

  1. Se muestra unicamente el código fuente debido a que no se logró se pudierán imprimir las pantallas debido a problemas en el compilador de C.
    Gracias

    ResponderEliminar