[Noti-aed] Ejercicio 3 void createab(btree<int> &B, list<int> &abpos,list<int> &val);
Alvaro Caffaro
alvarocaffaro2004 en gmail.com
Jue Nov 9 19:32:41 -03 2023
Envío void createab(btree<int> &B, list<int> &abpos,list<int> &val);
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://venus.santafe-conicet.gov.ar/pipermail/noti-aed/attachments/20231109/2895bfe4/attachment.html>
------------ próxima parte ------------
#define USECHRONO
#undef HAVE_MPI
#include "eval.hpp"
#include <cassert>
#include <climits>
#include <cstdlib>
#include <stack>
using namespace aed;
using namespace std;
//---:---<*>---:---<*>- COMIENZA CODIGO FUNCION --:---<*>---:---<*>---:---<*>
// COMPLETAR DNI y NOMBRE AQUI:
// Nombre: Caffaro, Alvaro
int DNI=45504292;
//---:---<*>---:---<*>---:---<*>---:---<*>---:---<*>
void createab(btree<int> &B, btree<int>::iterator n, list<int> &abpos,list<int> &vals) {
//si la lista abpos está vacía, salir.
if(abpos.empty()){
return;
}
//Caso contrario extraer los valores pos y val del comienzo de las listas (eliminarlos).
int pos = *abpos.begin();
int val = *vals.begin();
abpos.erase(abpos.begin());
vals.erase(vals.begin());
//Insertar el valor val en el nodo actual (refrescar el iterador).
n = B.insert(n,val);
//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.
if(2*pos +1 == *abpos.begin()){
createab(B,n.left(),abpos,vals);
}
// 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.
if(2*pos+2 == *abpos.begin()){
createab(B,n.right(),abpos,vals);
}
}
//---:---<*>---:---<*>---:---<*>---:---<*>---:---<*>
void createab(btree<int> &B, list<int> &abpos,list<int> &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;
}
Más información sobre la lista de distribución Noti-AED