Вы можете использовать следующий метод, чтобы получить список узлов. Вам нужно отправить верхний узел в метод, и он вернет список узлов. Этот метод написан, чтобы удостовериться в точной логике, которую вы упомянули, а именно: добавить верхний узел к нижнему и дочерние узлы к верхнему.
private List<NodeString> generateNodeList(NodeString topNode) {
List<NodeString> result = new LinkedList<>();
NodeString currentNode = topNode;
while(currentNode != null) {
result.add(0, currentNode);
currentNode = currentNode.getData();
}
return result;
}