[Noti-aed] Ejercicio buildBT - TPLR - Ramiro Ibarra

Ramiro Ibarra rami.ibarra47 en gmail.com
Mar Nov 21 16:27:52 -03 2023


------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://venus.santafe-conicet.gov.ar/pipermail/noti-aed/attachments/20231121/9c05693d/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: Ibarra Ramiro
int DNI=44180987;

int cant_hijos(tree<int> &T,tree<int>::iterator it){
  int hijos=0;
  tree<int>::iterator c=it.lchild();
  while(c!=T.end()){
    hijos++;
    c=c.right();
  }
  return hijos;
}

bool es_binario(tree<int> &T,tree<int>::iterator it){
  if(it==T.end());
  if(cant_hijos(T,it) > 2) return false;
  
  tree<int>::iterator c=it.lchild();
  while(c!=T.end()){
    if(!es_binario(T,c)) return false;
    c++;
  }
  return true;
}

void buildBT(tree<int> &T, btree<int> &BT, tree<int>::iterator it_T, btree<int>::iterator it_BT){
  if(it_T==T.end()) return;
  it_BT = BT.insert(it_BT,*it_T);
  
  tree<int>::iterator cT = it_T.lchild();
  if (cT!=T.end()) {
    buildBT(T,BT,cT,it_BT.left());
    cT++;
    buildBT(T,BT,cT,it_BT.right());
  }
}
  
void buildBT(tree<int> &A, btree<int> &BT) {
  BT.clear();
  if(!es_binario(A,A.begin())) return;
  buildBT(A,BT,A.begin(),BT.begin());
}

//---:---<*>---:---<*>- FINALIZA CODIGO FUNCION --:---<*>---:---<*>---:---<*>
int main() {
  Eval ev;
  int vrbs=0;
  ev.eval<1>(buildBT,vrbs);
  return 0;
}


Más información sobre la lista de distribución Noti-AED