Sugiero agregar a la funcion recursiva un parametro adicional, que sea un puntero a una funcion que realiza lo que quieres hacer con cada nodo. Esto no es evidente en la funcion recursiva. Es como una solucion generica a este nivel. Los detalles estan en la implementacion de la funcion que será pasada como parametro.
Código C++:
Ver originalvoid funcionRecursiva( Nodo* pnodo, void (*pfunc)( Nodo* ) )
{
//...
// cuando sea necesario,
// en medio de la funcion recursiva, invocar la funcion pfunc
pfunc( pnodo );
// ...
}
La funcion puede hacer lo que quieras, por ejemplo imprimir
Código C++:
Ver originalvoid imprimirNodo( Nodo* pnodo )
{
// se me ocurre que los > 100 solo pueden imprimirse
if( pnodo->valor > 100 )
{
cout << pnodo->valor << " ";
}
}
y luego invocar la funcion recursiva asi:
Código C++:
Ver originalint main()
{
Nodo* grafo = construirGrafo();
funcionRecursiva( grafo, imprimirNodo );
return 0;
}
Si necesitas otras funciones, que hagan otra cosa con cada nodo,
basta definirlas con distinto nombre e invocarlas usando el 2do parametro de la funcion.
Código C++:
Ver originalvoid ponerEnCero( Nodo* pnodo )
{
pnodo->valor = 0;
}
// ... en alguna parte, donde se haga necesario
funcionRecursiva( grafo, ponerEnCero );