Я не вижу, как здесь происходит сортировка.
- Поиск категории, у которой нет родителя
- поиск ребенка от него
- Перейти к 2
Это дает вам список, который вы хотите.
Примечание:
Если у каждого родителя есть только один ребенок или нет ребенка, вы получите список, как в вашем примере. (или более одного списка), иначе вы получите дерево (или более одного дерева).
В случае «один или нет ребенка» вы можете расширить свою категорию с помощью поля child
, что делает ее двойным связанным списком. В этом случае «поиск его потомка» становится тривиальным, поскольку у вас есть прямая ссылка на него.