Por djdecen , Lunes 21 de julio de 2008 a las 16:51
HOLA A TODOS NECESITO UN FABOR CASO ME PUEDEN AGREGAR UNAS FUNCIONES A ESTE PROGRAMA QUE YA TENGO HECHO..
#include <stdio.h>
#include <conio.h>
typedef struct Arbol{
int dato;
Arbol *derecho, *izquierdo;
};
Arbol *insertar(Arbol *A,int e){
if(A==NULL){
A=new(Arbol);
A->dato=e;
A->izquierdo=NULL;
A->derecho=NULL;
return(A);
}
else{
if(e<A->dato){
A->izquierdo=insertar(A->izquierdo,e);
}
if(e>A->dato){
A->derecho=insertar(A->derecho,e);
}
}
return(A);
}
char menu(){
char op;
clrscr();
gotoxy(15,1);printf(" ABB \n");
gotoxy(15,3);printf("1.- Agregar nodos al arbol\n");
gotoxy(15,4);printf("2.- Contar los nodos del arbol\n");
gotoxy(15,5);printf("3.- Listar los elementos del arbol\n");
gotoxy(15,6);printf("4.- Buscar un elemento en el arbol\n");
gotoxy(15,7);printf("5.- Eliminar un nodo\n");
gotoxy(15,8);printf("6.- Salir");
gotoxy(15,10);printf("ingrese opci¢n ==> ");
op=getche();
return(op);
}
void inorden(Arbol *A){
if(A!=NULL){
inorden(A->izquierdo);
printf("%d ",A->dato);
inorden(A->derecho);
}
}
void preorden(Arbol *A){
if(A!=NULL){
printf("%d ",A->dato);
preorden(A->izquierdo);
preorden(A->derecho);
}
}
void postorden(Arbol *A){
if(A!=NULL){
postorden(A->izquierdo);
postorden(A->derecho);
printf("%d ",A->dato);
}
}
int contar(Arbol *A){
if(A!=NULL)
return(contar(A->izquierdo)+contar(A->derecho)+1);
else
return(0);
}
int buscar(Arbol *A,int e){
if(A!=NULL)
if(A->dato==e)
return(1);
else{
if(e<A->dato)
return(buscar(A->izquierdo,e));
else
return(buscar(A->derecho,e));
}
else
return(0);
}
Arbol *unir(Arbol *izq, Arbol *der){
Arbol *centro;
if (izq==NULL)
return der;
if (der==NULL)
return izq;
centro= unir(izq->derecho, der->izquierdo);
izq->derecho= centro;
der->izquierdo= izq;
return der;
}
Arbol *eliminar(Arbol *A,int e){
if (A==NULL)
return NULL;
if (A->dato==e)
return unir(A->izquierdo,A->derecho);
if (e<A->dato)
A->izquierdo=eliminar(A->izquierdo,e);
else
A->derecho=eliminar(A->derecho,e);
return A;
}
void main(){
Arbol *A;
int ele;
char opcion;
A=NULL;
do{
opcion=menu();
switch(opcion){
case '1': printf("\n Ingrese elemento a agregar");
fflush(stdin);
scanf("%d",&ele);
A=insertar(A,ele);
break;
case '2':
printf("\n Existen %d nodos en el arbol",contar(A));
getche();
break;
case '3': printf("\n En Preorden : \n");
preorden(A);
printf("\n En Inorden : \n");
inorden(A);
printf("\n En Postorden : \n");
postorden(A);
getche();
break;
case '4':
printf("\nIngrese elemento a buscar ");
fflush(stdin);
scanf("%d",&ele);
if(buscar(A,ele)==1)
printf("\n El elemento est en el arbol");
else
printf("\n El elemento no esta en el arbol");
getche();
break;
case '5':
printf("\nIngrese elemento a eliminar ");
fflush(stdin);
scanf("%d",&ele);
printf("\n Antes de eliminar \n");
inorden(A);
getche();
A=eliminar(A,ele);
printf("\n Despuesde eliminar \n");
inorden(A);
getche();
break;
}
}while(opcion!='6');
}
AGREGAR
--LA SUMA DE LOS ELEMENTOS DEL ARBOL.
--OTRO QUE PERMITA TENER EL PROMEDIO DE LOS
ELEMENTOS DEL ARBOL.
--OTRO QUE PERMITA OBTENER EL MAXIMO ELEMENTO DEL
ARBOL
--OTRO QUE PERMITA TENER EL MINIMO ELEMENTO DEL
ARBOL.
ATTE PORFABOR ESPERO RESPUESTAS