多層樹遍歷實現

場景架構

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

         }

相關文章
相關標籤/搜索