В общем случае это невозможно. В вашем примере это будет работать.
Но вот еще один пример:
Number | Parent
10 | 1
11 | 1
100 | 10
101 | 10
102 | 10
1000 | 100
1001 | 100
Итак, вы хотите, чтобы все три строки 100
, 101
, 102
шли сразу после строки 10
, что невозможно.
А между строками 100
и 101
вам, вероятно, понадобятся строки 1000
и 1001
, поскольку их родителем является 100
.
[Update]
Таким образом, остаются следующие вопросы:
- Вам просто нужно упорядочить узлы так, чтобы каждый узел был определен где-то до того, как он будет использован в качестве родительского?
- Должны ли прямые дети следовать за родителями напрямую, или между ними могут быть какие-то другие узлы?
- Всегда ли родительский идентификатор меньше, чем идентификатор узла?