We can't give you an "exact" answer as we have no idea what your source data structure is or how it is organised.
But to populate your list you'd need more than just a
List<list<string>>
as your data holds more than just a list of children - it's needs an ID, each child needs an ID, and you add a count to it.
I'd create a Person class, something like this:
public class Person
{
public int ID { get; set; }
public string Name { get; set; }
public List<Person> Children { get; set; } = new List<Person>();
}
and then populate it from your data source, the equivalent of something like this:
List<Person> all = new List<Person>();
Person parent = new Person() { ID = 1, Name = "Toto" };
all.Add(parent);
parent.Children.Add(new Person() { ID = 4, Name = "Titi" });
parent.Children.Add(new Person() { ID = 5, Name = "Tata" });
parent = new Person() { ID = 2, Name = "Mimi" };
all.Add(parent);
...
Only using your data source to get the information.