sccount.cpp
/* COMIENZO DE DESCRIPCION
__USE_WIKI__
Cuenta la cantidad de "hijos unicos" de un arbol binario.
[Tomado en el TPL3 2013-11-09].
keywords: arbol binario
FIN DE DESCRIPCION */
// -----------------------------------------------------------------
#include <cstdio>
#include <iostream>
#include "./util.h"
#include "./btree.h"
#include "./util_btree.h"
using namespace aed;
using namespace std;
typedef btree<int> tree_t;
typedef btree<int>::iterator node_t;
//---:---<*>---:---<*>---:---<*>---:---<*>---:---<*>
int sccount(tree_t &T, node_t n) {
if (n==T.end()) return 0;
node_t l=n.left(), r=n.right();
int nchild = (l==T.end()) + (r==T.end());
return (nchild==1) + sccount(T,l) + sccount(T,r);
}
//---:---<*>---:---<*>---:---<*>---:---<*>---:---<*>
// Wrapper
int sccount(tree_t &T) {
return sccount(T,T.begin());
}
//---:---<*>---:---<*>---:---<*>---:---<*>---:---<*>
int main() {
btree<int> T;
for (int j=0; j<20; j++) {
// Genera un arbol binario aleatorio
make_random_btree (T, 10, 0.8);
printf("----------------\n");
T.lisp_print();
printf("\nNro de hijos unicos %d\n",sccount(T));
}
return 0;
}
Generated by GNU Enscript 1.6.6.