递归遍历取树形结构数据中的某个节点及所有子孙节点(java实现)
1、数据元素组成如下
public class Node{
private int id;
private int parentId;
private String name;
private List<Node> nodes=new ArrayList<>();
....
}
2、拼装成树形结构
List<Node> nodes= new ArrayList<>();
Map<Integer,Node> maps=new HashMap<>();
for(Node node:nodes){
maps.put(mode.getId(),Node);
}
for(Node node:nodes){
int parentId=node.getParentId();
if(parentId!=-1){
Node parent=maps.get(parentId);
parent.getChildren().add(node);
}
}
3、递归遍历所有节点及其所有子节点
public void getAllChilderen(Node node,List<Node> nodes){
nodes.add(node);
if(node.getChildren().size()!=0){
for(Node mNode:node.getChildren){
getAllChildren(mNode,nodes)
}
}
}
List<Node> nodes=new ArrayList<>();
Node node=maps.get(10);
getAllChildren(node,nodes);