Я думаю, что вам может быть неясно, что TreeSet
делает в Java. TreeSet
- это просто реализация интерфейса Set
, который использует дерево внутри. Аналогично для TreeMap
. Это не универсальная древовидная структура, которая позволяет переходить от родителей к детям. Тот факт, что он использует деревья, является строго деталью внутренней реализации.
Я понимаю, что у вас есть группа объектов, каждый из которых имеет ссылку на "родительский" объект. Эти «родительские» ссылки образуют дерево, но вы хотите перейти от родителей к детям, а не в обратном направлении (что было бы легко).
В этом случае я бы, вероятно, прошел по списку объектов и построил бы Map
от родительского объекта до List
потомков. Что-то вроде:
Map<Node,List<Node>> tree = new HashMap<Node,ArrayList<Node>>();
List<Node> roots = new ArrayList<Node>();
for(Node n : nodes) {
if(n.parent == null)
roots.add(n);
else {
if(!tree.containsKey(n.parent))
tree.put(n.parent, new ArrayList<Node>());
tree.get(n.parent).add(n);
}
}