算法刷题

【编程】给定一个部门,遍历出当前部门下所有子部门包含当前部门

给定一个部门,打印出当前部门及其子部门:思路分析:1:可能当前部门没有子部门,如果这种情况,直接返回当前部门;2:如果当前部门包含了子部门,就需要使用递归一层一层的查找;3:在递归的时候,因为是一层一层的,所以,可能在第二层的时候,已经添加了。在进行第三成的时候,可能为空了。需要去重。如下图:完整代码:public class AllDepartment {

给定一个部门,打印出当前部门及其子部门:

ac88d25ed9e8b1b9f4b351f46f64747a.png

思路分析:

1:可能当前部门没有子部门,如果这种情况,直接返回当前部门;

2:如果当前部门包含了子部门,就需要使用递归一层一层的查找;

3:在递归的时候,因为是一层一层的,所以,可能在第二层的时候,已经添加了。在进行第三成的时候,可能为空了。需要去重。如下图:

117ac4a6173658364896f13e53e11bac.png

完整代码:

public class AllDepartment {

    public static void main(String[] args) {
        AllDepartment allDepartment = new AllDepartment();
        List<Department> list = allDepartment.initDepartment();
        Department d1 = new Department();
        d1.setParentId(0);
        d1.setId(1);
        d1.setName("技术部");
        List<Department> myList = allDepartment.getMyAllDepartmentList(d1, list);
        myList.forEach(System.out::println);
    }

    private List<Department> getMyAllDepartmentList(Department d1, List<Department> list) {
        List<Department> result = new ArrayList<>();
        Integer myId = d1.getId();
        List<Department> mySonDepartment = list.stream().filter(d -> d.getParentId().equals(myId)).collect(Collectors.toList());
        result.add(d1);
        if (mySonDepartment.isEmpty()) {
            return result;
        }

        getSon(list, d1, result);
        return result;
    }

    private void getSon(List<Department> list

原创不易,完成人机校验,阅读全文

相关推荐