1. public void copyElementTree(List<DictTree> dictTrees, String newTempletId, String parentId) throws Exception {
    2. String parent = "";//父节点id
    3. if (CollectionUtils.isNotEmpty(dictTrees)) {
    4. //遍历树结构
    5. for (DictTree treeDto : dictTrees) {
    6. //查询评估指标层级数据
    7. InstitutionElement institutionElement = institutionElementMapper.selectById(treeDto.getId().toString());
    8. InstitutionElement element = new InstitutionElement();
    9. BeanUtils.copyProperties(institutionElement, element);
    10. String templetId = institutionElement.getElementKey();//模板id
    11. String oldElementId = institutionElement.getTempletKey();//风险维度id
    12. //如果是叶子节点
    13. if (treeDto.getIsLast().equals(RiskConstant.IS_LEAF_1)) {
    14. //复制叶子节点
    15. insertElement(element, newTempletId, parentId);
    16. } else {
    17. //复制普通节点
    18. if (treeDto.getParentId().equals("-1")) {
    19. parent = insertElement(element, newTempletId, "-1");
    20. } else {
    21. parent = insertElement(element, newTempletId, parentId);
    22. }
    23. //如果不是叶子节点,递归
    24. copyElementTree(treeDto.getChildren(), newTempletId, parent);
    25. }
    26. }
    27. }
    28. }

    以上是递归的主要方法。该方法可以实现普通树结构的复制,不局限于二叉树。
    复制的步骤:
    1.首先需要获取树结构
    2.调用该方法进行遍历

    获取树结构,目前用的是treeNode插件实现,也可以使用递归。