• Jueves 2 de Mayo de 2024, 02:01

Autor Tema:  Agregar funciones a Arbol Binario en C++  (Leído 1260 veces)

luirobert

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Agregar funciones a Arbol Binario en C++
« en: Martes 5 de Junio de 2012, 23:02 »
0
Hola me gustaria saber como agregar dos funciones al arbol binario:
Funcion recursiva cantidad de nodos del arbol
Funcion recursiva Altura del arbol

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
struct arbol{
int info;
struct arbol *left;
struct arbol *right;
};
typedef struct arbol nodetree;
typedef nodetree *arbolptr;
void insertar(arbolptr*L, int b);
void imprimir(arbolptr L);
void preorden(arbolptr L);
void entreorden(arbolptr L);
void posorden(arbolptr L);
void instrucciones();
main()
{
arbolptr L=NULL;
int inf, opcion;
instrucciones(),
(" \n Seleciona la opcion: \n");
scanf("%d",&opcion);
while(opcion!=5){
switch(opcion)
{
case 1:{
printf("\n Introduzca el elemento:");
scanf("%d",&inf);
insertar(&L,inf);
imprimir(L);
instrucciones();
break;
}
case 2: {
printf("Pre-orden");
preorden(L);
break;
}
case 3: {
printf("Entre-orden");
entreorden(L);
break;
}
case 4: {
printf("Pos-orden");
posorden(L);
break;
}
case 5: {
printf("Fin del programa");
break;
}
default:
printf("Operacion invalida");
instrucciones();
break;
}
printf("\n SELECCIONA UNA OPCION: ");
scanf("%d",&opcion);
}// Fin del While
printf("Fin del proyecto");
return 0;
}
void instrucciones()
{
printf("\n\n ************PROGRAMA DE ARBOL***************");
printf(" \n\n\t*****MENU PRINCIPAL********\n");
printf("\n 1- INTRODUZCA UN ELEMENTO AL ARBOL");
printf("\n 2- RECORRIDO EN PRE-ORDEN");
printf("\n 3- RECORRIDO EN ENTRE-ORDEN");
printf("\n 4- RECORRIDO EN POS-ORDEN");
printf("\n 5-SALIR\n");
}
void insertar(arbolptr*r,int x)
{
arbolptr pnuevo,panterior,pactual;
pnuevo=(arbol*)malloc(sizeof(arbol));
if(pnuevo!=NULL)
{
pnuevo->info=x;
pnuevo->right=NULL;
pnuevo->left=NULL;
panterior=NULL;
pactual=*r;
printf("%d",pnuevo->info);
while(pactual!=NULL && x>pactual->info)
{
panterior=pactual;
pactual=pactual->left;
}
if(panterior==NULL)
{
pnuevo->left=*r;
*r=pnuevo;
}
else
{
panterior->left=pnuevo;
pnuevo->left=pactual;
}
}
}
void imprimir(arbolptr pactual)
{
if(pactual==NULL)
printf("\n La lista esta vacia\n");
else
{
printf("\n La cadena de elementos del Arbol es:\n");
while(pactual!=NULL)
{
printf("%d->",pactual->info);
pactual=pactual->left;
}
printf("NULL\n\n");
}
}
void preorden(arbolptr pactual)
{
if(pactual!=NULL)
{
printf("%d",pactual->info);
preorden(pactual->left);
}
}
void entreorden(arbolptr pactual)
{
if(pactual!=NULL)
{
entreorden(pactual->left);
printf("%d",pactual->info);
entreorden(pactual->right);
}
}
void posorden(arbolptr pactual)
{
if(pactual!=NULL)
{
posorden(pactual->left);
posorden(pactual->right);
printf("%d",pactual->info);
}
}
disculpas si el codigo es largo...
saludos!!