JSTree下的模糊查询算法——树结构数据层次遍历和递归分治地深入应用

上传人:小** 文档编号:97433584 上传时间:2022-05-27 格式:DOC 页数:2 大小:99KB
返回 下载 相关 举报
JSTree下的模糊查询算法——树结构数据层次遍历和递归分治地深入应用_第1页
第1页 / 共2页
JSTree下的模糊查询算法——树结构数据层次遍历和递归分治地深入应用_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述
JSTree下的模糊查询算法一一树结构数据层次遍历和递归分治地深入应用表示区域节点,S表示站点结点问题描述:现有包含左图中的所有结点信息(包含区域结点和站点结点),需要做到输入站点名称模糊查询,显示查询子树结果如右图解决策略:i先模糊查询所得站点所在区域结点6根据这些从下往上搜索所有子树的区域结点(主义表述,是区域结点),存至et合(避免重复放入)2找出e集合中的最高点(最高点的父节点为空),查询结点信息放入,从上往下搜索子树中所有孩子结点()递归遍历,的孩子结点,存至孩子结点数组,遇到区域结点没有孩子结点则表示其到了最底层区域结点()将其对应区域结点信息存至其孩子结点数组3两步递归操作,设值注入最高点结点信息,最终得到包含整棵子树的所有结点信息。返回给页面mneul!&l=&!.eqame)nnaemweS=ring(name.getBytes(字符串转码StringBuffenresweSatrcrihnVgaBluufefe=rsearchValue.aend(模糊查询格式化eeStationseeeSe根据站点名称模糊查找站点集合StringnetrratyiL装填上面模糊查询中所负责的站点,eIntegernaewreAarIrady存放上面站点所在区域,即最底层的区域结点SetnewaHreasIhdSSeete存放子树中所有区域结点的,避免重复用e集合StationBasenBaseeareaIdre表示用户所负责的所有区域站点的,即整颗树区域节点es.a,eeSeareaIeereeareaIdSet.adeereee(sereSe=egetAreSer设值注入获取子树中所有区域结点的找出最咼点,装入集合JSeewejJSoO_NtObpjeec最咼点纟吉点reerreeareaI,Set)reisnteweInrrtaeyer为了符合传入的是集合rea_I,(area_I,);aseServicerer找出最高点,并装填信息rereareaServierereeJSJSNOObbjjecectt,s);atee=rerereet,textreeret,typereeue)es;taeopene,stateere设值注入获取包含根e结点的子树et(0.gereaPrere存入数组递归查找包括最底层re-S直往上的所有re,避免重复用Se集合rreSi底层到最高层所有层的re集合rre根据用户输入站点名所查的最底层re集合rerreecetSet,eergetAllAreaI,BySearch,SeteerreSeeerreereaI,_nruoelw&l!&=earererere写在与前面,避免为空先做判断,直到查到re为空结束递归eerrere获取s当前erree所有的rere,I,sByAreeoeer,eIeneeerre,:areaParentIeeeeareaI使用e集合对所搜集re进行去重reSeSe递归访问上一层区域结点rerereSere*递归查找从最高点jo往下一层层遍历,将遍历结点存至孩子结点数组中* paramjo最高点* paramarealdSet整颗树区域id* paramareaPrefix区域id前缀* paramstationCodes子树所有站点code* return*/protectedJSONObjectfindChainArea(JSONObjectjo,SetarealdSet,StringareaPrefix,ListstationCodes)Listchildlds=stationBaseService.findldsByParent(lnteger.parselnt(jo.get(id).toString().split(_)1);if(childlds!=null&childlds.size()0&childlds.get(O)!=null)有子区域节点,非叶节点查询子区域节点信息,添加到Ijo中,arealdSet中对应的idJSONArrayareaChildArray=newJSONArray();/存放该结点在对应子树中的孩子结点数组for(lntegerchildld:childlds)if(arealdSet.contains(childld)/属于子树中结点便添加到孩子结点数组中Areaarea=areaService.findAllArea(childld).get(0);JSONObjectjo_child=newJSONObject();JSONObjectstate=newJSONObject();jo_child.put(id,areaPrefix+area.getld();jo_child.put(text,area.getArea();jo_child.put(type,areatype);state.put(opened,true);jo_child.put(state,state);jo_child=findChainArea(jo_child,arealdSet,areaPrefix,stationCodes);areaChildArray.add(jo_child);jo.put(children,areaChildArray);else无子区域,叶节点,添加站点信息ListstationBaseList=stationBaseService.findByAreald(lnteger.parselnt(jo.get(id).toString().split(_)1);JSONArraystationArray=newJSONArray();/该站点下的所有站点for(StationBasestationBase:stationBaseList)if(stationCodes.contains(stationBase.getStationCode()JSONObjectstationObj=newJSONObject();stationObj.put(id,s_+stationBase.getStationCode();stationObj.put(text,stationBase.getStationName();stationObj.put(type,stationlnfo);stationObj.put(children,false);stationArray.add(stationObj);jo.put(children,stationArray);returnjo;
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!