java树形结构递归算法小结

1.根据父节点查找下面所有叶子节点的id集合,其中selectAllChildSysDeptList方法中的sysDept实体为父节点。
public List selectAllChildSysDeptList(SysDept sysDept) {
List childIdList=new ArrayList<>();
recursionSelect(sysDept,childIdList);
return childIdList;
}

private void recursionSelect(SysDept sysDept,List<String> childIdList) {
	//先通过parentId查找下面的所有叶子节点
	SysDept dept=new SysDept();
	dept.setParentDeptId(sysDept.getDeptId());
	List<SysDept> childList=sysDeptDao.selectSysDeptList(dept);
	if(!CollectionUtils.isEmpty(childList)){
		for(SysDept sysDeptVo:childList){
			childIdList.add(sysDeptVo.getDeptId());
			recursionSelect(sysDeptVo,childIdList);
		}
	}
}

2.获取树结构的递归算法。
public List getDeptTree() {
List sysDeptList = sysDeptRepository.findAll();
List treeNodeVoList = new ArrayList();
if (!CollectionUtils.isEmpty(sysDeptList)) {
for (SysDept sysDept : sysDeptList) {
//父id为空的节点为根节点
if (StringUtils.isEmpty(sysDept.getParentDeptId())) {
TreeNodeVo treeNodeVo = new TreeNodeVo();
treeNodeVo.setId(sysDept.getDeptId());
treeNodeVo.setName(sysDept.getDeptName());
treeNodeVo.setSonNodeList(recursionSelect(sysDept, sysDeptList));
treeNodeVoList.add(treeNodeVo);
}
}
}
return treeNodeVoList;
}

private List recursionSelect(SysDept sysDept, List sysDeptList) {
List sontreeNodeVoList = new ArrayList();
for (SysDept dept : sysDeptList) {
TreeNodeVo treeNode = new TreeNodeVo();
treeNode.setId(dept.getDeptId());
treeNode.setName(dept.getDeptName());
if (sysDept.getDeptId().equals(dept.getParentDeptId())) {
treeNode.setSonNodeList(recursionSelect(dept, sysDeptList));
sontreeNodeVoList.add(treeNode);
}
}
return sontreeNodeVoList;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值