遞歸遍歷取樹形結構數據中的某個節點及所有子孫節點(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);