Gracias a los dos por responder,
Creo que voy a implementar lo de la tabla con la estructura de árbol, creo que es lo que mejora más el rendimiento, usando arrays tendría que usar recursividad y con la tabla solo un ciclo.
Aunque cada vez que se genere la tabla cuando inserte algo nuevo va a tardar más del tiempo que se tarda ahora, ya que va a tener que hacer select y insert, mmmm... Creo que mejor uso los arrays...