ник: osmor
если отсортировать невозможно - то стройте "по-веточно" начиная от верхнего уровня.
т.е.
1. получили список узлов верхнего уровня (это я надеюсь возможно? у них нет родителя...)
2. перебирая поочередно отобранные узлы для каждого делаем
3. добавили его в дерево
4. отобрали всех детей добавленого узла
далее к п 3.
все...