public static List<TreeNode> treeToList(List<TreeNode> tree) {
List<TreeNode> list = new ArrayList<>();
for (TreeNode node : tree) {
list.add(node);
if (node.getChildren() != null) {
list.addAll(treeToList(node.getChildren()));
}
}
return list;
}
public static List<TreeNode> listToTree(List<TreeNode> list) {
List<TreeNode> tree = new ArrayList<>();
for (TreeNode node : list) {
if (node.getParentId() == null) {
tree.add(findChildren(node, list));
}
}
return tree;
}
private static TreeNode findChildren(TreeNode node, List<TreeNode> list) {
for (TreeNode child : list) {
if (node.getId().equals(child.getParentId())) {
if (node.getChildren() == null) {
node.setChildren(new ArrayList<>());
}
node.getChildren().add(findChildren(child, list));
}
}
return node;
}