ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

ARBOL EN C++


Enviado por   •  13 de Junio de 2012  •  1.024 Palabras (5 Páginas)  •  511 Visitas

Página 1 de 5

El programa genera un arbol binario, captura caracteres y los introduce en el arbol, despues muestra los recorridos en preorden, inorden y postorden. Maneja memoria dinamica!!!

//PROGRAMA QUE CAPTURA UNA CADENA DE CARACTERES DE MAXIMO 200 ELEMENTOS Y

//CREA UN ARBOL DE BUSQUEDA CON LOS CARACTERES DE LA CADENA Y REALIZA RECORRIDOS

// EN PREORDEN,ENTREORDEN Y POSTORDEN.

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

#include<string.h>

/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/

struct nodoarbol{ //ESTRUCTURA DEL ARBOL

struct nodoarbol *izqnodo;

int info;

struct nodoarbol *dernodo;

};

typedef struct nodoarbol NODO; //DEFINICION DE TIPO NODO

typedef NODO *ARBOL; //DECLARACION DE VARIABLE PUNTERO A NODO

/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/

void insertanodonuevo(ARBOL *,int); //DECLARACION DE FUNCIONES

void inorden(ARBOL);

void preorden(ARBOL);

void postorden(ARBOL);

void treefree(ARBOL);

/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/

/*-----------------------<FUNCION PRINCIPAL>--------------------------------*/

main(){

int i; //CONTADOR

char newnod,chain[200],elementos; //DECLARACION DE CADENA,BANDERA Y VARIABLE QUE CONTIENE EL NUEVO VALOR A INSERTAR EN EL ARBOL

clrscr();

ARBOL raiz=NULL; //DECLARACION DE VARIABLE DE TIPO ARBOL

printf("\n\n\tIntroduzca una cadena de caracteres (max. 200 elementos):\n");

gets(chain);

elementos=strlen(chain); //CHECA EL TAMA¥O DE LA CADENA Y ESTABLECE EL NUMERO DE NODOS DEL ARBOL

for(i=1;i<=elementos;i++) {

newnod=chain[i-1];

insertanodonuevo(&raiz,newnod);

}

printf("\n\n preorden ¯¯\t");

preorden(raiz); //LLAMADO A FUNCION DE RECORRIDO EN PREORDEN

printf("\n\n inorden ¯¯\t");

inorden(raiz); //LLAMADO A FUNCION DE RECORRIDO EN INORDEN

printf("\n\n postorden ¯¯\t");

postorden(raiz); //LLAMADO A FUNCION DE RECORRIDO EN POSTORDEN

getch();

treefree(raiz); //LIBERACION DE MEMORIA DEL ARBOL.

raiz=NULL; //ASIGNACION DE UN VALOR NULO A LA RAIZ.

return 0;

}

/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/

/*-CREA UN NUEVO NODO Y COLOCA LOS VALORES DEL NUEVO ELEMENTO EN LA POSICION CORRESPONDIENTE */

void insertanodonuevo(ARBOL *rarbol,int nuevo){

if(*rarbol==NULL){ //CREACION DE UN NUEVO NODO

*rarbol=(NODO *)malloc(sizeof(NODO));

if(*rarbol!=NULL){

//ASIGNACION DE VALORES NUEVOS EN EL NODO NUEVO

(*rarbol)->info=nuevo;

(*rarbol)->izqnodo =NULL;

(*rarbol)->dernodo=NULL;

}

else{printf("\n¬¬¬¬ Memoria No Disponible !!!!\n");}

}

else

if(nuevo<(*rarbol)->info) //checa si el elemento nuevo es mayor que el elemento padre

insertanodonuevo(&((*rarbol)->izqnodo),nuevo); //coloca el elemento a la izquierda del padre o raiz

else

if(nuevo>(*rarbol)->info) //checa si el elemento nuevo es menor que el elemento padre

insertanodonuevo(&((*rarbol)->dernodo),nuevo);

...

Descargar como (para miembros actualizados) txt (6 Kb)
Leer 4 páginas más »
Disponible sólo en Clubensayos.com