一、树结构用来做什么?

树结构多用于菜单、部门、公司等父子集结构的数据。

二、使用示例

/**
     *获取树结构数据
     * @author L_dy
     * @date 2022/4/11 14:48 
     * @return java.util.List<com.clt.base.menu.domain.Menu>
     */
public List<Menu> childrenMenuList(Menu menu) {
        List<Menu> menuList = new ArrayList<>();//new一个集合,用以存储整个树结构
        List<Menu> menus = new ArrayList<>();
        List<Menu> childrenMenuList = menuMapper.childrenMenuList(menu);//此方法为获取每个父节点
        for (Menu menu1 : childrenMenuList) {
            menus = getNextSubSet(menu1);//以父节点为参数获取下面的所有子、孙节点所生成的树结构
            menu1.setChildrenMenuList(menus);//生成树结构将获取的结构数据存储父节点对象里
            menuList.add(menu1);
        }
        return menuList;
    }

     /**
     *生成树结构
     * @author L_dy
     * @date 2022/4/11 14:48 
     * @return java.util.List<com.clt.base.menu.domain.Menu>
     */
    public List<Menu> getNextSubSet(Menu menu) {
        List<Menu> menus = menuMapper.childrenMenuListByParentId(menu);//以父节点获取子节点
        for (Menu menu1 : menus) {
            List<Menu> nextLevel = getNextLevel(menu1);//获取子节点下的再有的子孙节点
            menu1.setChildrenMenuList(nextLevel);//生成树结构将获取的结构数据存储父节点对象里
        }
        return menus;
    }

     /**
     *获取每个子节点
     * @author L_dy
     * @date 2022/4/11 14:48 
     * @return java.util.List<com.clt.base.menu.domain.Menu>
     */
    public List<Menu> getNextLevel(Menu menu) {
        List<Menu> menus = menuMapper.childrenMenuListByParentId(menu);//以父节点获取子节点
        if (menus.size()!=0){
            for (Menu menu1 : menus) {
                menu1.setChildrenMenuList(getNextLevel(menu1));//生成树结构将获取的结构数据存储父节点对象里
            }
        }
        return menus;
    }