#define USECHRONO #undef HAVE_MPI #include "eval.hpp" #include #include #include #include using namespace aed; using namespace std; //---:---<*>---:---<*>- COMIENZA CODIGO FUNCION --:---<*>---:---<*>---:---<*> // COMPLETAR DNI y NOMBRE AQUI: // Nombre: Rocío Anahí Widmer int DNI=45387321; /*Escribir una función void createab(btree &B, list &abpos,list &val); que, dado un árbol B, y dos listas de enteros abpos y val va tomando valores p y v de ambas listas y va insertando el valor v en la posición correspondiente a abpos=p. Las posiciones en abpos recorren los nodos en orden previo. Escribir una función recursiva con un argumento adicional de tipo iterador. En la función recursiva, si la lista abpos está vacía, salir. Caso contrario extraer los valores pos y val del comienzo de las listas (eliminarlos). Insertar el valor val en el nodo actual (refrescar el iterador). Ahora hay que crear (recursivamente) los árboles izquierdo y derecho. Si la lista NO está vacía y si el valor en el frente de abpos es 2*pos+1 llamar recursivamente sobre el hijo izquierdo para crear su subárbol. Si la lista NO está vacía y si el valor en el frente de abpos es 2*pos+2 llamar recursivamente sobre el hijo derecho para crear su subárbol. */ //---:---<*>---:---<*>---:---<*>---:---<*>---:---<*> void createab(btree &B, btree::iterator n, list &abpos,list &vals) { if(abpos.empty())return; int pos,val; auto itp=abpos.begin(); pos=*itp; abpos.erase(itp); auto itv=vals.begin(); val=*vals.begin(); vals.erase(itv); n=B.insert(n,val); if(!abpos.empty() && *abpos.begin()==(2*pos+1))createab(B,n.left(),abpos,vals); if(!abpos.empty() && *abpos.begin()==(2*pos+2))createab(B,n.right(),abpos,vals); } void createab(btree &B, list &abpos,list &vals) { createab(B,B.begin(),abpos,vals); } //---:---<*>---:---<*>- FINALIZA CODIGO FUNCION --:---<*>---:---<*>---:---<*> int main() { Eval ev; int vrbs=0; ev.eval<1>(createab,vrbs); // ev.evalr<1>(createab,12345,vrbs); return 0; }