Mostrando entradas con la etiqueta Tercer Examen. Mostrar todas las entradas
Mostrando entradas con la etiqueta Tercer Examen. Mostrar todas las entradas

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;

}
}
}