crear árbol de matriz de la lista de matriz

Tengo una lista como esta:

array(
  array(id=>100, parentid=>0, name=>'a'),
  array(id=>101, parentid=>100, name=>'a'),
  array(id=>102, parentid=>101, name=>'a'),
  array(id=>103, parentid=>101, name=>'a'),
)

pero mucho más grande, así que necesito una forma eficiente de convertir esto en una estructura similar a un árbol como esta:

array(
  id=>100, parentid=>0, name=>'a', children=>array(
    id=>101, parentid=>100, name=>'a', children=>array(
      id=>102, parentid=>101, name=>'a',
      id=>103, parentid=>101, name=>'a',
    )
  )
)

No puedo usar cosas como conjuntos anidados o cosas así porque puedo agregar valores izquierdo y derecho en mi base de datos. ¿algunas ideas?

Respuestas a la pregunta(8)

Su respuesta a la pregunta