livello iniziale=0 (root)
imposti una variabile, p.es. $livello=0
SELECT dei record "root" (owner=0)
fai un select dei record con "owner=0" e metti i risultati in un $array
metto i record nella lista
finchè la lista non è vuota...
per ogni elemento...
...prendo quelli che hanno come parent tale elemento e lo aggiungo alla lista
...fine controllo lista
fai un ciclo in $array finchè ci sono elementi: peschi con altri SELECT gli elementi che hanno quello corrente analizzato come parent e li aggiungi in coda al vettore $array stesso, togliendo dalla testa quello già controllato. A un certo punto $array diventerà vuoto e il ciclo è finito.
Naturalmente dentro il ciclo devi anche popolare un'altro vettore per tenere traccia dell'albero dei menu che si viene a creare.