#include #include typedef struct nodo{ int valor; struct nodo *padre; struct nodo *izq; struct nodo *der; } Nodo; void codigo(Nodo *nodo, unsigned int *val) { // escribir la funcion }; void main(){ int val[5] = {4, 6, 2, 8, 3}; Nodo *arbol = (Nodo*)malloc(5*sizeof(Nodo)); // nodo 1 arbol->valor = val[0]; arbol->izq = arbol+2; arbol->der = arbol+1; arbol->padre = NULL; // nodo 2 (arbol+1)->valor = val[1]; (arbol+1)->izq = NULL; (arbol+1)->der = arbol+3; (arbol+1)->padre = arbol; // nodo 3 (arbol+2)->valor = val[2]; (arbol+2)->izq = NULL; (arbol+2)->der = arbol+4; (arbol+2)->padre = arbol; // nodo 4 (arbol+3)->valor = val[3]; (arbol+3)->izq = NULL; (arbol+3)->der = NULL; (arbol+3)->padre = arbol+1; // nodo 5 (arbol+4)->valor = val[4]; (arbol+4)->izq = NULL; (arbol+4)->der = NULL; (arbol+4)->padre = arbol+2; for (int i = 0; i < 5; i++) { printf("%d ", (arbol+i)->valor); if ((arbol+i)->izq != NULL){ printf("izq %d ", (arbol+i)->izq->valor); } if ((arbol+i)->der != NULL){ printf("der %d ", (arbol+i)->der->valor); } if ((arbol+i)->padre != NULL){ printf("padre %d ", (arbol+i)->padre->valor); } printf("\n"); } // llama e imprime los codigos int i=0; unsigned int cod = 0; for (int i = 0; i < 5; i++){ codigo(arbol+i, &cod); // ver binario printf("%d = ", (arbol+i)->valor); for (int j = 5; j>=0; j--){ printf("%d", (cod>>j) & 1); } printf("\n"); cod = 0; } }