Vous êtes sur la page 1sur 4

Algoritmos computacionales 3NM90 1 Jimnez Rocha Arturo

Arboles
Declaracin
Algoritmo:
Estructura tarbol Comienza tarbol Entero clave; Estructura tarbol *izq. *der; Fin t rbol

Cdigo:
typedef struct tarbol { int clave; struct tarbol *izq,*der; } tarbol;

Recorrido en preorden:
Algoritmo:
Mtodo preorden (tarbol *a) Inicia mtodo Si (a= nulo) visitar(a) preorden(a->izq) preorden(a->der) fin de si Fin de metodo

Cdigo:
void preorden(tarbol *a) { if (a != NULL) { visitar(a); preorden(a->izq); preorden(a->der); } }

Recorrido en inorden:
Algoritmo:
metodo inorden(tarbol *a) comienza metodo si (a != Nulo) comienza si inorden(a->izq) visitar(a) inorden(a->der) fin de si fin de metodo

Cdigo:
void inorden(tarbol *a) { if (a != NULL) {

Algoritmos computacionales 3NM90 2 Jimnez Rocha Arturo


inorden(a->izq); visitar(a); inorden(a->der); } }

Recorrido en postorden:
Algoritmo:
metodo postorden(arbol *a) comienza metodo si (a != Nulo) comienza si postorden(a->izq) postorden(a->der) visitar(a) fin de si fin de metodo

Cdigo:
void postorden(arbol *a) { if (a != NULL) { postorden(a->izq); postorden(a->der); visitar(a); } }

Recorrido en amplitud:
Algoritmo:
Mtodo amplitud(tarbol *a) Comienza mtodo amplitud tCola cola /* las claves de la cola sern de tipo rbol binario */ arbol *aux si (a != Nulo) comienza si CrearCola(cola) encolar(cola, a) mientras (!colavacia(cola)) comienza mientras desencolar(cola, aux) visitar(aux) si (aux->izq != Nulo) encolar(cola, aux->izq) si (aux->der != Nulo) encolar(cola, aux->der) fin de mientras fin de si fin de metodo

Cdigo:
void amplitud(tarbol *a) { tCola cola; /* las claves de la cola sern de tipo rbol binario */ arbol *aux; if (a != NULL) { CrearCola(cola); encolar(cola, a);

Algoritmos computacionales 3NM90 3 Jimnez Rocha Arturo


while (!colavacia(cola)) { desencolar(cola, aux); visitar(aux); if (aux->izq != NULL) encolar(cola, aux->izq); if (aux->der != NULL) encolar(cola, aux->der); } } }

Bsqueda
Algoritmo:
Metodo boleano buscar(tarbol *a, entero elem) Comienza metodo si (a == Nulo) retorna FALSE en otro caso si (a->clave < elem) retorna buscar(a->der, elem) en otro caso si (a->clave > elem) retorna buscar(a->izq, elem) en otro caso retorna TRUE fin de metodo

Codigo:
boolean buscar(tarbol *a, int elem) { if (a == NULL) return FALSE; else if (a->clave < elem) return buscar(a->der, elem); else if (a->clave > elem) return buscar(a->izq, elem); else return TRUE; }

Insercin
Algoritmo:
metodo insertar(tarbol **a, entero elem) comienza metodo si (*a == Nulo) *a = (arbol *) malloc(sizeof(arbol)) (*a)->clave = elem (*a)->izq = (*a)->der = Nulo Fin de si En otro caso si ((*a)->clave < elem) insertar(&(*a)->der, elem) En otro caso si ((*a)->clave > elem) insertar(&(*a)->izq, elem) Fin de mtodo

Cdigo:
void insertar(tarbol **a, int elem) { if (*a == NULL) { *a = (arbol *) malloc(sizeof(arbol)); (*a)->clave = elem; (*a)->izq = (*a)->der = NULL; } else if ((*a)->clave < elem) insertar(&(*a)->der, elem); else if ((*a)->clave > elem) insertar(&(*a)->izq, elem); }

Algoritmos computacionales 3NM90 4 Jimnez Rocha Arturo

Borrado
Algoritmo:
metodo borrar(tarbol **a, entero elem) comienza metodo metodo sustituir(tarbol **a, tarbol **aux) tarbol *aux si (*a == Nulo) /* no existe la clave */ retorna si ((*a)->clave < elem) borrar(&(*a)->der, elem) en otro caso si ((*a)->clave > elem) borrar(&(*a)->izq, elem) en otro caso si ((*a)->clave == elem) comienza si aux = *a si ((*a)->izq == Nulo) *a = (*a)->der en otro caso si ((*a)->der == Nulo) *a = (*a)->izq en otro caso sustituir(&(*a)->izq, &aux) /* se sustituye por la mayor de las menores */ libre(aux) fin de si fin de metodo

Cdigo:
void borrar(tarbol **a, int elem) { void sustituir(tarbol **a, tarbol **aux); tarbol *aux; if (*a == NULL) /* no existe la clave */ return; if ((*a)->clave < elem) borrar(&(*a)->der, elem); else if ((*a)->clave > elem) borrar(&(*a)->izq, elem); else if ((*a)->clave == elem) { aux = *a; if ((*a)->izq == NULL) *a = (*a)->der; else if ((*a)->der == NULL) *a = (*a)->izq; else sustituir(&(*a)->izq, &aux); /* se sustituye por la mayor de las menores */ free(aux); } }

Vous aimerez peut-être aussi