java树形递归.docx

上传人:大米 文档编号:550927628 上传时间:2023-11-14 格式:DOCX 页数:6 大小:14.35KB
返回 下载 相关 举报
java树形递归.docx_第1页
第1页 / 共6页
java树形递归.docx_第2页
第2页 / 共6页
java树形递归.docx_第3页
第3页 / 共6页
java树形递归.docx_第4页
第4页 / 共6页
java树形递归.docx_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《java树形递归.docx》由会员分享,可在线阅读,更多相关《java树形递归.docx(6页珍藏版)》请在金锄头文库上搜索。

1、如何来做一棵递归树,这在前面的文章中有提过,但那是引用了myfaces组件的,今天就不用啥组件了,直接输出树的结构形状.数据库表数据一样,但还是在此重复一次。我们的目标是:完成以下形态的树状.-管理-高级管理员-增加-删除-修改-普通管理员-增加一、建表/*-树形菜单 节点编号 节点名称 节点链接址 些节点父节点 是否最底节点 节点排序(一般用在同级节点上) 节点说明 */drop table EPTreeTable create table EPTreeTable( TreeNodeId int identity(1,1) constraint pk_TreeNode primary key

2、, TreeNodeName varchar(50) not null, TreeNodeLink varchar(100) , TreeNodeFatherId int default 0, -0 为最高层 TreeNodeIsBottom bit default 1, -1 为底层 0为非底层 TreeNodeCompositor int default 1, - 默认排在最后面 TreeNodeExplain varchar(200) )二、JAVA代码(1)TO对象/* author fangbiao* 用于映射父级菜单TO对象*/public class ParentResource

3、Pojo /* * 节点编号 */private int treeNodeId;/* * 节点名称 */private String treeNodeName;/* * 父节点 */private int treeParentNodeId;/* * return treeNodeName */public String getTreeNodeName() return treeNodeName;/* * param treeNodeName 要设置的 treeNodeName */public void setTreeNodeName(String treeNodeName) this.tre

4、eNodeName = treeNodeName;/* * return treeParentNodeId */public int getTreeParentNodeId() return treeParentNodeId;/* * param treeParentNodeId 要设置的 treeParentNodeId */public void setTreeParentNodeId(int treeParentNodeId) this.treeParentNodeId = treeParentNodeId;/* * return treeNodeId */public int getT

5、reeNodeId() return treeNodeId;/* * param treeNodeId 要设置的 treeNodeId */public void setTreeNodeId(int treeNodeId) this.treeNodeId = treeNodeId;(2)树形组合/* * 获取节点选择列表信息 * return */public List getResourceList()if(resourceList.size() = 0) /获取高级的父节点resourceList = doTurnParentToTree(itbs.getTopParentResource

6、();return resourceList;private int num =2;private int tempTotalChildren ;private boolean temp = false;private int tempParent; /每次递归节点的父节点/* * 对父级列表进行树排 * param prp * return */private synchronized List doTurnParentToTree(ParentResourcePojo prp)if(prp = null)return null;List list = getChildrenList(prp

7、); /分线tempParent = prp.getTreeParentNodeId();String str = ;if(tempParent = 0)resourceList.add(-+prp.getTreeNodeName();elseresourceList.add(prp.getTreeNodeName();/每棵树的节点数目tempTotalChildren = list.size();Iterator iterator = list.iterator(); while(iterator.hasNext()ParentResourcePojo treePojo = (Parent

8、ResourcePojo)iterator.next();if(tempParent != 0)if( tempParent treePojo.getTreeParentNodeId()num -=1;temp = false;else if( tempParent = treePojo.getTreeParentNodeId() )if(tempTotalChildren =0)temp = false;elsetemp = true;for(int i=0;inum;i+)str = str + -;treePojo.setTreeNodeName(CommonUtil.doAddAppe

9、ndString(str,treePojo.getTreeNodeName();str = ;doTurnParentToTree(treePojo); return resourceList;/* * 父级菜单列表 */private List allParentTreeList = null; /* * 做标记用 */private int flag = 0;/* * 获取所有父级菜单列表树 * return */private List getAllParentTreeList()if(allParentTreeList = null)if(flag = 0)flag = 1;allPa

10、rentTreeList = itbs.getRRCResource();return allParentTreeList;return allParentTreeList;return allParentTreeList;/* * 取子树列 * param prp * return */private List getChildrenList(ParentResourcePojo prp)List list = getAllParentTreeList();int listLength = list.size();List newReturnList = new ArrayList();if

11、(listLength = 0)return newReturnList;List leaveList = new ArrayList();for(int i=0;ilistLength;i+)ParentResourcePojo prPojo = (ParentResourcePojo)list.get(i);int treePojoTreeParantNodeId = prPojo.getTreeParentNodeId();int tpTreeNodeId = prp.getTreeNodeId();if(treePojoTreeParantNodeId = tpTreeNodeId)newReturnList.add(prPojo);elseleaveList.add(prPojo);list = leaveList;return newReturnList;到此完成,期间一定要注重同级节点的排序。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号