Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
h>
#include <stdlib.h>
#define TRUE 1
#define FALSE 0
typedef struct nodo
{
int numero;
struct nodo *derecho;
struct nodo *izquierdo;
}*ptr;
void Insertar(ptr *nodo, int dato);
void Eliminar_nodo(ptr *a, int dato);
int Buscar(ptr nodo, int dato);
int EsHoja(ptr h);
int Num_Nodos(ptr nodo, int* c);
int Altura_Arbol(ptr nodo, int *altura);
int Nivel_Nodo(ptr nodo, int dat);
void InOrden(ptr nodo, void (*func)(int*));
void PreOrden(ptr nodo, void (*func)(int*));
void PostOrden(ptr nodo, void (*func)(int*));
void Eliminar_Arbol(ptr *nodo);
void auxContador(ptr nodo, int*);
void auxAltura(ptr nodo, int, int*);
void Mostrar(int *a);
int main()
{
ptr Arbol = NULL;
");
scanf("%d",&opcion);
switch (opcion)
{
case 1: system("cls");
printf("\n Indique cuntos datos desea insertar
");
scanf("%d",&ndatos);
system("cls");
printf("\n Introduzca %d datos\n\n", ndatos);
for(i=1; i<=ndatos; i++)
{
scanf("%d",&num);
Insertar(&Arbol, num);
}
system("cls");
printf("\n Nmero nodos ----> %d ", Num_Nodos(Arbol, &num));
printf("\n\n Altura `rbol ----> %d ", Altura_Arbol(Arbol, &
num));
printf("\n\n InOrden
----> ");
InOrden(Arbol, Mostrar);
printf("\n\n PreOrden
----> ");
PreOrden(Arbol, Mostrar);
printf("\n\n PostOrden
----> ");
PostOrden(Arbol, Mostrar);
printf("\n\n\n\n\n\n\n\n");
system("pause");
system("cls");
break;
case 2:
system("cls");
printf("\n\n Introduzca nodo
");
scanf("%d", &num);
system("cls");
printf("\n\n Nivel de %d ----> %d\n",num, Nivel_Nodo(Arb
ol, num));
printf("\n\n\n\n\n\n\n\n");
system("PAUSE");
system("cls");
break;
case 3:
system("cls");
printf("\n Introduzca dato a buscar
scanf("%d", &num);
system("cls");
Buscar(Arbol, num);
printf("\n\n\n\n\n\n\n\n");
system("PAUSE");
system("cls");
break;
");
case 4: system("cls");
printf("\n Introduzca dato a eliminar
");
scanf("%d", &num);
system("cls");
Eliminar_nodo(&Arbol, num);
printf("\n\n Eliminado
----> %d ",num);
printf("\n\n InOrden
----> ");
InOrden(Arbol, Mostrar);
printf("\n\n Nmero nodos ----> %d", Num_Nodos(Arbol, &num));
printf("\n\n Altura rbol ----> %d", Altura_Arbol(Arbol, &num)
);
printf("\n\n\n\n\n\n\n\n");
system("PAUSE");
system("cls");
break;
case 5: system("cls");
Eliminar_Arbol(&Arbol);
printf("\n ARBOL ELIMINADO");
printf("\n\n\n\n\n\n\n\n");
system("PAUSE");
system("cls");
break;
case 6:
break;
default: system("cls");
break;
}
} while (opcion!=6);
return 0;
int Vacio(ptr r)
{
return r==NULL;
}
{
if(nodo->izquierdo)
InOrden(nodo->izquierdo, func);
func(&(nodo->numero));
if(nodo->derecho)
InOrden(nodo->derecho, func);
}
return -1;
return 0;
}