martes, 21 de agosto de 2012

ARBOLES BINARIOS




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


struct nodoarbol{
       struct nodoarbol *izqnodo;
       int info;
       char letra;
       struct nodoarbol *dernodo;
       };
typedef struct nodoarbol NODO;
typedef NODO *ARBOL;

       void insertanodonuevo(ARBOL *, int,char);
       void inorden (ARBOL);
       void preorden (ARBOL);
       void postorden (ARBOL);
       void treefree (ARBOL);
    
main()
{
  int i, n, elementos;
  char newnod, chain;
  ARBOL raiz=NULL;

  printf("\n\nCuantos nodos desea insertar: ");
  scanf("%d",&n);
  for (i=0;i<n;i++)
  {
      fflush(stdin);
      printf("\nIntroduce un numero: ");
      scanf("%d",&elementos);
      fflush(stdin);
      printf("Introduce una letra: ");
      scanf("%c",&chain);
      insertanodonuevo(&raiz,elementos,chain);
      }
      system("cls");
  printf("\n\nPreorden:  ");
  preorden(raiz);
  printf("\n\nInorden:   ");
  inorden(raiz);
  printf("\n\nPostorden: ");
  postorden(raiz);
  getch();
  treefree(raiz);
  raiz=NULL;
  return 0;
}


void insertanodonuevo(ARBOL *rarbol, int nuevo,char l)
{
     if (*rarbol==NULL)
     {
     *rarbol=(NODO *)malloc(sizeof(NODO));
     if(*rarbol!=NULL)
     {
     (*rarbol)->info=nuevo;
     (*rarbol)->letra=l;
     (*rarbol)->izqnodo=NULL;
     (*rarbol)->dernodo=NULL;
     }
     else {printf("\nMEMORIA NO DISPONIBLE\n");}
     }
     else
     if(nuevo<(*rarbol)->info)
     insertanodonuevo(&((*rarbol)->izqnodo),nuevo,l);
     else
     if(nuevo>(*rarbol)->info)
     insertanodonuevo(&((*rarbol)->dernodo),nuevo,l);
     }
  
void preorden (ARBOL rarbol)
{
     if(rarbol!=NULL)
     {
                  
     printf("%d",rarbol->info);
     printf("%c",rarbol->letra);
     preorden(rarbol->izqnodo);
     preorden(rarbol->dernodo);
     }
}

void inorden(ARBOL rarbol)
{
     if(rarbol!=NULL)
     {
     inorden(rarbol->izqnodo);
     printf("%d", rarbol->info);
     printf("%c",rarbol->letra);
     inorden(rarbol->dernodo);
     }
}

void postorden(ARBOL rarbol)
{
     if(rarbol!=NULL)
     {
                  
     postorden(rarbol->izqnodo);
     postorden(rarbol->dernodo);
     printf("%d", rarbol->info);
     printf("%c",rarbol->letra);
     }
}

void treefree(ARBOL rarbol)
{
     if(rarbol!=NULL)
{
     treefree (rarbol->izqnodo);
     treefree(rarbol->dernodo);
     treefree (rarbol);
}
}

No hay comentarios:

Publicar un comentario