场景:
工作中组织架构存储多层,比如部门、处室、办公室等。当点击一个父节点时,需要展示该节点,以及挂载到该节点下的所有后代节点的数据。这时候就需要根据一个节点找出他的所有的后代节点。就是需要根据一个父节点遍历所有子节点。
实现方式:
这种层级树遍历一般都需要使用递归调用。
首先需要判定当前这个节点有没有后代节点,如果有则进行遍历。获取下一层节点。
如果没有:则遍历结束。如果有子节点,则需要继续遍历子节点。
代码实现:
/**
*功能:获取直接子节点
*/
private List getChild(String pid) throws Exception{
List voList = this.queryListByPid(pid);
List idList = new ArrayList();
if(voList!=null){
for(int i=0,max=voList.size();i<max;i++){
AddressCatalogVO vo = (AddressCatalogVO)voList.get(i);
idList.add(vo.getId());
}
}
return idList;
}
//使用递归遍历所有后代子节点
public List getAllChildern(String pid) throws Exception{
List childList = getChild(pid);
if(childList!=null&&childList.size>0){
for(int i=0;i<childList.size();i++){
String childId = (String) childList.get(i);
List tempList = getAllChildern(childId);
if(tempList!=null){
childList.addAll(tempList);
}
}
}
return childList;
}