yo creo que con recursividad todo es posible...
además, estás usando varios nombres convencionales:
atributos,
hijo además de -
supongo- numéricos...
en cambio si todos los índices fueran realmente distintos sería un buen problema... pero lo dudo, en realidad yo también me pregunto que haces con dicho código, que se ve bastante enredado y confuso de analizar...
incluso me atrevo a decir que el diseño de tu solución es realmente el problema... (: