Está en la página 1de 5

Instituto politécnico Universitario “Santiago Mariño”

Asignatura – Estructura Discretas y Grafos

Actividad #6. Ejercicios

Agosto del 2022


Ejercicios

1) -Genere el árbol binario de búsqueda para la siguiente secuencia de números:


8, 9, 11, 15, 19, 20, 21, 7, 3, 2, 1,5, 6, 4, 13, 14, 10, 12, 17, 16, 18. Analice y
describa lo que sucede durante su inserción (4pts).

Se puede observar que se cumplen las reglas de construcción de un árbol


binario y que el árbol contiene un nivel 7 y un peso de 21.

2) -Especificar e implementar una función booleana que, dados dos árboles


binarios, indique si el primero es inferior al segundo. Diremos que un árbol
binario es inferior a otro, si los elementos del primero, en los nodos
coincidentes en posición, son menores que los del segundo (ver figura) (6 pts).

Solución algorítmica del problema propuesto


3) Supongamos que deseamos construir un ABB para la siguiente tabla de datos
(4pts).
El resultado es un árbol muy poco
balanceado y con características
muy pobres para la búsqueda.

4) El recorrido en pre-orden de un determinado árbol binario es:


GEAIBMCLDFKJH y en in-orden IABEGLDCFMKHJ. (6 pts)

• Dibujar el árbol binario.

• Dar el recorrido en post-orden.

• Diseñar una función para dar el recorrido en post-orden dado el recorrido en pre-
orden e in-orden y escribir un programa para comprobar el resultado del apartado
anterior.
El recorrido en post-orden es: IBAEDLFCHJKMG

 Programa para comprobar el resultado del apartado anterior.


/*Fichero: comprobar.c */

#include < stdio.h>


#include < stdlib.h>
#include < string.h>

char *preorden="GEAIBMCLDFKJH";
char *inorden="IABEGLDCFMKHJ";
char *postorden;

/*---------------------------------------*/

void post(char *pre,char *in,char *pos,int n)


{
int longIzqda;

if(n!=0){
pos[n-1]=pre[0];
longIzqda=strchr(in,pre[0])-in;
post (pre+1,in,pos,longIzqda);
post (pre+1+longIzqda,in+1+longIzqda,pos+longIzqda,n-1-longIzqda);
}
}

/*----------------------------------------*/

int main(int argc,char *argv[])


{
int aux;

aux=strlen(preorden);
postorden=(char *)malloc(aux*sizeof(char));
if (postorden){
printf("El preorden es: %s\n",preorden);
printf("El inorden es: %s\n",inorden);
post(preorden,inorden,postorden,aux);
postorden[aux]='\0';
printf("El postorden calculado es: %s\n",postorden);
free(postorden);
}
else{
fprintf(stderr,"Error: Sin memoria\n");
return 1;
}

return 0;
}

También podría gustarte