Programa Arbol
Programa: arbol.c
Funcion: Operaciones basicas con arboles
binarios
Autor:
Fecha:**********************************************/
#include <stdio.h>
#include <stdlib.h>
typedef struct nodo {
int clave;
struct nodo *izq, *der;
} NODO;
NODO *raiz = NULL;
void alta() {
int clave;
NODO*previo, *actual;
printf("Clave: ");
scanf("%d",&clave);
previo = NULL; actual = raiz;
while(actual && actual->clave != clave) {
previo = actual;
if(actual->clave< clave)
actual = actual->der;
else
actual = actual->izq;
}
if(actual)
printf("La clave ya existe!\n");
else {
actual = (NODO *) malloc(sizeof(NODO));actual->clave = clave;
actual->izq = NULL;
actual->der = NULL;
if(previo)
if(previo->clave < clave)
previo->der = actual;
elseprevio->izq = actual;
else
raiz = actual;
}
}
void reporte(NODO *actual, int nivel) {
int i;
if(actual) {
reporte(actual->izq,nivel+1);
for(i=0; i<nivel; ++i)printf("\t");
printf("%d\n",actual->clave);
reporte(actual->der,nivel+1);
}
}
void preorden(NODO *actual) {
if(actual) {
printf("%4d",actual->clave);preorden(actual->izq);
preorden(actual->der);
}
}
void enorden(NODO *actual) {
if(actual) {
enorden(actual->izq);
printf("%4d",actual->clave);
enorden(actual->der);}
}
void postorden(NODO *actual) {
if(actual) {
postorden(actual->izq);
postorden(actual->der);
printf("%4d",actual->clave);
}
}
void recorridos() {printf("Preorden: ");
preorden(raiz);
printf("\n");
printf("Enorden: ");
enorden(raiz);
printf("\n");
printf("Postorden: ");
postorden(raiz);
printf("\n");
}
void...
Regístrate para leer el documento completo.