多层树遍历实现

3 月,跳不动了?>>> hot3.png

场景

         工作中组织架构存储多层,比如部门、处室、办公室等。当点击一个父节点时,需要展示该节点,以及挂载到该节点下的所有后代节点的数据。这时候就需要根据一个节点找出他的所有的后代节点。就是需要根据一个父节点遍历所有子节点。

实现方式

         这种层级树遍历一般都需要使用递归调用。

        首先需要判定当前这个节点有没有后代节点,如果有则进行遍历。获取下一层节点。

如果没有:则遍历结束。如果有子节点,则需要继续遍历子节点。

代码实现:

/**

*功能:获取直接子节点

*/

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;

         }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值