场景:架构
工做中组织架构存储多层,好比部门、处室、办公室等。当点击一个父节点时,须要展现该节点,以及挂载到该节点下的全部后代节点的数据。这时候就须要根据一个节点找出他的全部的后代节点。就是须要根据一个父节点遍历全部子节点。this
实现方式:递归
这种层级树遍历通常都须要使用递归调用。get
首先须要断定当前这个节点有没有后代节点,若是有则进行遍历。获取下一层节点。io
若是没有:则遍历结束。若是有子节点,则须要继续遍历子节点。List
代码实现:遍历
/**数据
*功能:获取直接子节点query
*/工作
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;
}