/*I. La expresión de salida será una lista de los naturales que se encuentran en los nodos del árbol. Dado el árbol de ejemplo, la salida esperada es la siguiente: 1 2 3 4 5 6 7*/ #include void imprimirporNivelesI(ABNat t){ if (t!=NULL){ QABNat c = crearCola(); encolar(c,t); while(!esVacio(c)){ t=frente(c); printf("%d", t->dato); desencolar(c); if (t->izq!=NULL){ encolar(c,t->izq); } if (t->der!=NULL){ encolar(c,t->der); } } liberarCola(c); } } /*II. La expresión de salida se mostrará por nivel. Es decir, para cada nivel se presentará a su lado la lista de los naturales que se encuentran en los nodos correspondientes a dicho nivel. Dado el árbol de ejemplo, la salida esperada es la siguiente: 1 - 1 2 - 2 3 3 - 4 5 6 7 */ void imprimirporNivelesII(ABNat t){ if (t!=NULL){ QABNat c = crearCola(); int nivelcont=1; encolar(c,t); encolar(c,NULL); printf("%d - ", nivelcont); while(!esVacio(c)){ t=frente(c); desencolar(c); if (t==NULL && !esVacio(c)){ //si llegue a un NULL y al quitarlo la cola no queda vacia es porque cambie de nivel encolar(c,NULL); nivelcont++; printf("%d - ", nivelcont); }else if (t!=NULL){ //no llegue a un NULL, entonces imprimo el valor y encolo sus hijos printf("%d", t->dato); if (t->izq!=NULL){ encolar(c,t->izq); } if (t->der!=NULL){ encolar(c,t->der); } }else{// llegue a un NULL y es vacia al quitarlo ya llegue al final de la cola } } liberarCola(c); } } int main() { std::cout<<"Hello World"; return 0; }