[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