Hola. Una duda con respecto a la versión iterativa. Seguí el pseudocódigo de la Wikipedia: http://en.wikipedia.org/wiki/Depth-first_search
Y cada vez que se procesa un nodo se agregan sus hijos y se lo marca como ya cerrado. Esto estrictamente da un orden de cerrado inverso al caso iterativo en el que un nodo se cierra luego de haber procesado a sus hijos. Entiendo que es lo mismo, porque luego podemos imprimir en el orden correcto cuando terminamos de procesar. Es correcto hacer eso? O modifico el algoritmo para cerrar un nodo después de procesar a sus hijos?
Otra cuestión es que se supone que el algoritmo iterativo puede hacer que explote el stack de invocación y por eso el iterativo es más apropiado (aunque menos intuitivo). Entonces la duda es si probamos con un árbol grande hasta hacer reventar el stack de invocación :) o alcanza con comentar esto sin verificarlo. A mi la verdad que me gustaría hacer volar el stack de invocación, solo que no me he puesto a generar un árbol lo suficientemente grande. Además, me da la impresión de que debería de ser verdaderamente grande para que eso ocurra y tal vez me quede sin memoria antes de reventar el stack. No sé, quería saber si la idea era probarlo o simplemente comentar que eso podría pasar.
Saludos!