Yo uso una estructura muy diferente, pero que me permite recorrer el array estando en cualquier punto, por supuesto, siempre que cada elemento tenga definido su padre y hace tiempo compartí la idea en:
http://www.forosdelweb.com/f18/categ...7/#post4626035
El resultado no es como lo deseas, pero no creo que tengas problemas para generar el diagrama.