countlev.cpp
// $Id$
/* COMIENZO DE DESCRIPCION
__USE_WIKI__
Escribir una funcion
#void count_level(tree<int> &T, int l),# que
cuenta cuantos nodos hay en el nivel #l# del arbol #T#.
[Tomado en el TPL2 2013-10-12].
keywords: arbol orientado
FIN DE DESCRIPCION */
// -------------------------------------------------------------------
#include <cstdarg>
#include <cstdio>
#include <iostream>
#include <map>
#include <set>
#include <algorithm>
#include "./util.h"
#include "./tree.h"
#include "./util_tree.h"
using namespace aed;
using namespace std;
typedef tree<int> tree_t;
//---:---<*>---:---<*>---:---<*>---:---<*>---:---<*>
int count_level(tree_t &T,tree_t::iterator n,int l) {
if (n==T.end()) return 0;
if (l==0) return 1;
tree_t::iterator c = n.lchild();
int m=0;
while (c!=T.end()) m += count_level(T,c++,l-1);
return m;
}
//---:---<*>---:---<*>---:---<*>---:---<*>---:---<*>
int count_level(tree_t &T,int l) {
return count_level(T,T.begin(),l);
}
//---:---<*>---:---<*>---:---<*>---:---<*>---:---<*>
int main() {
tree_t T;
make_random_tree2(T,5,10,2.0);
T.lisp_print();
printf("\n");
int l=0;
while (1) {
int m = count_level(T,l);
if (!m) break;
printf("Level %d, nodes %d\n",l++,m);
}
return 0;
}
Generated by GNU Enscript 1.6.6.