JAVA递归获取所有子节点与父节点

/**
 * 递归获取所有子节点,不包含自己
 */
public class getChildren {
    static List> childCategoryList = new ArrayList>();
 
    public static void main(String[] args) {
        List> allCategoryList = new ArrayList>();
        Map map = new HashMap();
        map.put("auId", "0");
        map.put("parentId", "-1");
        Map map1 = new HashMap();
        map1.put("auId", "1");
        map1.put("parentId", "0");
        Map map2 = new HashMap();
        map2.put("auId", "2");
        map2.put("parentId", "1");
        Map map3 = new HashMap();
        map3.put("auId", "3");
        map3.put("parentId", "2");
        Map map4 = new HashMap();    
        map4.put("auId", "4");
        map4.put("parentId", "3");
        Map map5  = new HashMap();    
        map5.put("auId", "44");
        map5.put("parentId", "3");
        Map map6  = new HashMap();    
        map6.put("auId", "55");
        map6.put("parentId", "4");
        allCategoryList.add(map);
        allCategoryList.add(map1);
        allCategoryList.add(map2);
        allCategoryList.add(map3);
        allCategoryList.add(map4);
        allCategoryList.add(map5);
        allCategoryList.add(map6);
        String categoryAuId = "0";
        childCategoryList = new ArrayList>();
        List> rMap = getChildCategory(allCategoryList, categoryAuId);
        System.out.println("rMap=" + rMap);
    }
    
    public static List> getChildCategory(List> allCategoryList, String parentId){          
        for (Map category : allCategoryList) {
            // 判断是否存在子节点
            if (category.get("parentId").toString().equals(parentId)) {
                // 递归遍历下一级
                getChildCategory(allCategoryList, category.get("auId").toString());
                childCategoryList.add(category);
            }
        }
        System.out.println("childCategoryList=" + childCategoryList);
        return childCategoryList;
    }
}

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

递归获取所有父节点测试用例:

/**
 * 递归所有父节点,包含自己
 */
public class getParents {
    
    static List> parentCategoryList = new ArrayList>();
    
    public static void main(String[] args) {
        List> allCategoryList = new ArrayList>();
        Map map = new HashMap();
        map.put("auId", "0");
        map.put("parentId", "-1");
        Map map1 = new HashMap();
        map1.put("auId", "1");
        map1.put("parentId", "0");
        Map map2 = new HashMap();
        map2.put("auId", "2");
        map2.put("parentId", "1");
        Map map3 = new HashMap();
        map3.put("auId", "3");
        map3.put("parentId", "2");
        Map map4 = new HashMap();    
        map4.put("auId", "4");
        map4.put("parentId", "3");
        Map map5  = new HashMap();    
        map5.put("auId", "44");
        map5.put("parentId", "3");
        Map map6  = new HashMap();    
        map6.put("auId", "55");
        map6.put("parentId", "4");
        allCategoryList.add(map);
        allCategoryList.add(map1);
        allCategoryList.add(map2);
        allCategoryList.add(map3);
        allCategoryList.add(map4);
        allCategoryList.add(map5);
        allCategoryList.add(map6);
        String categoryAuId = "55";
        parentCategoryList = new ArrayList>();
        List> rMap = getParentCategory(allCategoryList, categoryAuId);
        System.out.println("rMap="+rMap);
    }
 
    private static List> getParentCategory(List> allCategoryList, String categoryAuId) {
        for (Map category : allCategoryList) {
            // 判断是否存在父节点
            if (category.get("auId").toString().equals(categoryAuId)) {
                // 递归遍历上一级
                getParentCategory(allCategoryList, category.get("parentId").toString());
                parentCategoryList.add(category);
            }
        }
        System.out.println("parentCategoryList=" + parentCategoryList);
        return parentCategoryList;
    }
}
 

你可能感兴趣的:(递归,Java)