需要生成的树结构:
表中树型关系
java代码
/**
* 生成n叉树
* @param code
* @param dependNode
* @return
*/
public DependNode queryLevel2(String code, DependNode dependNode){
LambdaQueryWrapper<Depend> lambda = new QueryWrapper<Depend>().lambda();
lambda.eq(Depend::getCode, code);
List<Depend> dependList = dependMapper.selectList(lambda);
dependNode.setCode(code);
List<DependNode> dependNodeList = new ArrayList<>();
if(CollectionUtils.isEmpty(dependList)){
DependNode dependNode1 = new DependNode();
dependNode1.setCode(code);
dependNode1.setList(null);
return dependNode1;
}
for (int i = 0; i < dependList.size(); i++) {
DependNode dependNode2 = queryLevel2(dependList.get(i).getDepend(), new DependNode());
dependNodeList.add(dependNode2);
}
dependNode.setList(dependNodeList);
return dependNode;
}
/**
* 遍历n叉树最大深度
*/
public int maxDepth(DependNode root) {
if(CollectionUtils.isEmpty(root.getList())){
return 0;
}
int num = 0;
if(!CollectionUtils.isEmpty(root.getList())){
for (int i = 0; i < root.getList().size(); i++) {
num = Math.max(num, 1 + maxDepth(root.getList().get(i)));
}
}
return num;
}
树节点,实体类就不贴了,对应数据库的字段
@Data
public class DependNode {
private String code;
private List<DependNode> list;
}