Вот небольшая мысль ....
Если я правильно понимаю, вы можете просто перебирать список справа налево и читать пары ... Используйте словарь / карту / хеш-таблицу, чтобы сохранитьих организовали.Вам может потребоваться определить собственный компаратор для него, но это не так уж сложно.
Поэтому, когда вы выполняете итерацию справа налево, сверху вниз, вы добавляете пары по мере их чтения, так что ...
parent = "1A";
child = "1B";
list.add(child, parent);
//Then on the next iteration.....
parent = "1B";
child = "1C";
И так далее ...
Таким образом, используя в качестве ключа дочерний элемент, вы получаете список всех уникальных значений, который становится вашим столбцом идентификатора.
Тогда ваш list.values () станет вашим столбцом ParentID, так как он будет содержать дубликаты для всех родителей, у которых было более одного ребенка.Именно поэтому ребенок прекрасно играет роль ключа, поскольку вы можете родиться только один раз, но у вас может быть много детей.
РЕДАКТИРОВАТЬ: БАХ!Кто-то побил меня этим гораздо более полной версией того, что я предлагал ... ну да ладно.Мне больше нравится мое словесное описание;)