domingo, 19 de agosto de 2012

Árbol


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


void datos (void)
    {
    system("color 6");
    int a=15,b=8;
    gotoxy (a,b);
    printf ("Edith Juarez Juarez \n\n");
    int c=20,d=5;
    gotoxy (c,d);
    printf ("Grupo 351\n\n");
    for(int x=3;x<=40;x++){
    gotoxy(x,3);
    printf("*");
  }
    for(int x=3;x<=40;x++){
    gotoxy(x,10);
    printf("*");
  }
  // getch();
  }




struct nodoarbol{
       struct nodoarbol *izqnodo;
       int info;
       char letra; //let
       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()
{
  datos();
  int i,m,num;
  char newnod, chain ;
  ARBOL raiz=NULL;
  printf("\nDigite cuandos nodos quiere insertar\n");
  scanf("%d",&m);
  for (i=0;i<m;i++)
  {
      fflush(stdin);
      printf("Introduzca numero y numero : ");
      scanf("%d  %c",&num,&chain);
      fflush(stdin);
     
      insertanodonuevo(&raiz,num,chain);
      }
  printf("\nPreorden \n");
  preorden(raiz);
  printf("\ninorden \n");
  inorden(raiz);
  printf("\nPostorden \n");
  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("memoria 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