当前位置: 代码迷 >> Web前端 >> tree 依据根节点递归得到所有叶子节点
  详细解决方案

tree 依据根节点递归得到所有叶子节点

热度:111   发布时间:2012-09-09 09:27:54.0
tree 根据根节点递归得到所有叶子节点




Map<Integer,Monitortype> map=new HashMap<Integer,Monitortype>();非叶子节点
Map<Integer,Monitortype> map2=new HashMap<Integer,Monitortype>();//叶子节点


    /**
     * 根据树的根节点递归获取所有叶子节点
     * @param pid
     * @return
     */
    public void getleafMonitortype(int pid){
   
    List<Monitortype> mon =this.infoSearchService.getListByMonitorTypePid(pid);
    for(Monitortype mo:mon){
    if(mo.getNodeType()==1){
    map2.put(mo.getId(), mo);
    }
    if(mo.getNodeType()==0){
    map.put(mo.getId(), mo);
    }
    }
    if(map.size()!=0){
   
    getm();
   
    }
   
    }
   
    public void getm(){
    List l=new ArrayList();
    for (Map.Entry<Integer, Monitortype> entry : map.entrySet()) {
    List<Monitortype> mon =this.infoSearchService.getListByMonitorTypePid(entry.getKey());
        for(Monitortype mo:mon){
        if(mo.getNodeType()==1){
        map2.put(mo.getId(), mo);
        }
        if(mo.getNodeType()==0){
        map.put(mo.getId(), mo);
       
        }
        }
       
        l.add(entry.getKey());
    }
   
         if(l.size()!=0){
        for(int p=0;p<l.size();p++){
        map.remove(l.get(p));
       
        }
         }
    if(map.size()!=0){
    getm();
    }
   
    }

调用处:main{
map.clear();
map2.clear();
getleafMonitortype(pid);
List<Monitortype> list=new ArrayList();
//list = infoSearchService.getListByMonitorTypePid(pid);
for (Map.Entry<Integer, Monitortype> entry : map2.entrySet()) {
    list.add(entry.getValue());
System.out.println("map的键位:"+entry.getKey()+ ""+"map的值为:"+entry.getValue());
}

}


自此的到叶子节点的list ;

写的不是很好,请高手指教;





  相关解决方案