Realmente tiene dos tipos en uno en su última consulta. Los padres pueden ordenar de manera ascendente o descendente, pero los niños solo pueden ordenar de manera ascendente.
Después de ver esto, creo que puede obtener una solución con algo como esto.
order by case
when depth = 0
then path
/*
secret function that always returns the
right numbers regardless of whether or not the sort is ascending.
*/
else XXX_function('DESC', path)
end desc;
Creo que la lógica es sólida, pero debe descubrir cómo reemplazar los números en orden descendente, ya que las cosas estarán 'al revés'. (Tal vez invertir las posiciones de la matriz)