La forma más fácil de construir un árbol a partir de una lista de Ancestros

En mi corazón, siento que debe haber una solución recursiva super simple para esto, pero no puedo asimilarlo de inmediato.

Tengo un árbol almacenado en SQL como una tabla de cierre. El árbol se ve como: (1 (2 (3), 4)), y los idiomas son SQL y PHP 5.3 de MySQL.

La mesa de cierre es así:

+----------+------------+
| ancestor | descendant |
+----------+------------+
|        1 |          1 | 
|        2 |          2 | 
|        3 |          3 | 
|        4 |          4 | 
|        1 |          2 | 
|        1 |          3 | 
|        1 |          4 | 
|        2 |          3 | 
+----------+------------+

Puedo consultar a los ancestros con bastante facilidad con:

 SELECT descendant AS id, GROUP_CONCAT(ancestor) as ancestors FROM
 closure GROUP BY (descendant);

 +----+-----------+
 | id | ancestors |
 +----+-----------+
 |  1 | 1         | 
 |  2 | 2,1       | 
 |  3 | 3,1,2     | 
 |  4 | 4,1       | 
 +----+-----------+

¿Cómo puedo construir fácilmente un árbol en PHP con estos datos? ¿Puedo usar una consulta más inteligente para extraer más datos de MySQL?

Respuestas a la pregunta(2)

Su respuesta a la pregunta