Creo que te falta estudiar el modelo un poco mas...
NO ES DONDE LO REASIGNO, es DONDE LO PARO, justo donde pusiste 'fin, ahi es blnSeguir = False, lo que pusiste es un ciclo eterno, no tiene donde pararse, en lo que yo puse, hay donde y porque pararse, que es cuando termina, justamente cuando no encuentra mas hijos...
Repito, tal vez tengo algo mal, no esta probado, como el detalle de la "," extra que ya corregite, etc., falta las validaciones, pero el MODELO, LA IDEA, es correcta, es decir, asi funciona bien.
Bueno, sera cosa de irlo probando para depurarlo
Gracias por hacerlo, a speedy le va a servir...
Suerte!!