場景:架構
工做中組織架構存儲多層,好比部門、處室、辦公室等。當點擊一個父節點時,須要展現該節點,以及掛載到該節點下的全部後代節點的數據。這時候就須要根據一個節點找出他的全部的後代節點。就是須要根據一個父節點遍歷全部子節點。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;
}