逆向递归,给一个完整的树,找对应的部门树

递归找到树 找到部门 树

构建一棵树 很简单,只要有parentId,很简单递归 就能构建好这棵树,今天来讲 怎么样 递归从树中 找到这个 对应 id 的树,比如传入 部门id 找到 这个部门树,逆向递归。

/**
     * 获取用户部门树
     * @param treeList
     * @return
     */
    private Tree getUserDeptTree(List> treeList,Long deptId){
        if(!CollectionUtils.isEmpty(treeList)) {
            for (int i = 0; i < treeList.size(); i++) {
                Tree tree = treeList.get(i);
                List> children = tree.getChildren();
                if (Objects.equals(tree.getId(), deptId) && !CollectionUtils.isEmpty(children)) {
                    return tree;
                }
                Tree buildUserDeptTree = getBuildUserDeptTree(children, deptId);
                if (!CollectionUtils.isEmpty(buildUserDeptTree)) {
                    return buildUserDeptTree;
                }
            }

        }
        return new Tree<>();
    }
    
    /**
     * 递归找到部门树
     * @param children
     * @param deptId
     * @return
     */
    private Tree getBuildUserDeptTree(List> children,Long deptId){
        Tree result =  new Tree<>();
        if(!CollectionUtils.isEmpty(children)){
            for (int i = 0; i < children.size(); i++) {
                Tree tree = children.get(i);
                List> childrenTree = tree.getChildren();
                if (Objects.equals(tree.getId(), deptId) && !CollectionUtils.isEmpty(children)) {
                    return tree;
                }
                Tree userDeptTree = getBuildUserDeptTree(childrenTree, deptId);
                if(!CollectionUtils.isEmpty(userDeptTree)){
                    return userDeptTree;
                }
            }
        }

        return result;
    }

你可能感兴趣的:(逆向递归,给一个完整的树,找对应的部门树)