(礼拜三log)递归树算法2
来源:互联网 发布:软件开发流程图软件 编辑:程序博客网 时间:2024/04/30 17:31
为ztree数据设计的后台java逻辑生成树:
递归参数包括了父级节点的id,可以使递归算法得到简化。
/** * 组织机构(树) */public JSONArray tree(String id, Integer topLevel, Integer open, String url){ JSONArray tree = new JSONArray(); JSONArray orgs = find(); String top_id = "0"; if (topLevel != null && topLevel.equals(1)) { JSONObject top = new JSONObject(); top.put("id", top_id); top.put("name", "顶级机构"); top.put("iconSkin", "tollstation"); if (!StringUtil.isEmpty(url)) { top.put("id", top_id + "_organizationId"); top.put("url", url + "&organizationId=" + top_id); top.put("target", "_self"); } JSONArray top_children = new JSONArray(); recursion_tree(top_children, orgs, id, top_id, open, url); if (top_children.size() > 0) { if (open != null && open.equals(1)) top.put("open", true); top.put("children", top_children); } tree.add(top); } else recursion_tree(tree, orgs, id, top_id, open, url); return tree;}/** * 组织机构递归(树) */private void recursion_tree(JSONArray tree, JSONArray orgs, String id, Object parentId, Integer open, String url){ for (Object org_obj : orgs) { JSONObject org = (JSONObject) org_obj; if (org.get("parentOrganizationId").equals(parentId) && (StringUtil.isEmpty(id) || !id.equals(org.get("organizationId")))) { JSONObject org_row = new JSONObject(); org_row.put("id", org.get("organizationId")); org_row.put("name", org.get("organizationName")); org_row.put("iconSkin", "tollstation"); if (!StringUtil.isEmpty(url)) { org_row.put("id", org.get("organizationId") + "_organizationId"); org_row.put("url", url + "&organizationId=" + org.get("organizationId")); org_row.put("target", "_self"); } JSONArray org_children = new JSONArray(); recursion_tree(org_children, orgs, id, org.get("organizationId"), open, url); if (org_children.size() > 0) { if (open != null && open.equals(1)) org_row.put("open", true); org_row.put("children", org_children); } tree.add(org_row); } }}
另外还有一个类似的递归算法:比较简化,可以提供思路:
/** * 组织机构(表树) */public JSONArray findTable(Integer topLevel, JSONObject entity){ JSONArray list = new JSONArray(); JSONArray orgs = find(entity); recursion_table(list, orgs, "0"); return list;}/** * 组织机构递归(表树) */public void recursion_table(JSONArray list, JSONArray orgs, Object parentId){ for (Object org_obj : orgs) { JSONObject org = (JSONObject) org_obj; if (org.get("parentOrganizationId").equals(parentId)) { list.add(org); recursion_table(list, orgs, org.get("organizationId")); } }}
0 0
- (礼拜三log)递归树算法2
- (礼拜三log)input只读
- (礼拜三log)前端开发:zTree插件
- (礼拜三log)前端开发:replace函数
- (礼拜三log)前端开发,c foreach 标签 & 点击空白处时禁止Bootstrap模态框消失 & javascript的DFS算法
- 礼拜三log~java web框架探索&baidu地图
- 礼拜三log~为页面设置弹出框的办法
- 礼拜三log~Mac本本对于问题java.lang.OutOfMemoryError: PermGen space ---- PermGen space溢出的解决
- 礼拜三log~关于c:test标签 & js鼠标变身! & java字符串相关函数
- 礼拜三log~Mac下eclipse项目环境的搭建 & jsp文件命名规范
- (礼拜三log)前端开发,form标签的使用,jsp param标签的使用,${param}
- (礼拜三log)前端开发:好用的日历插件推荐 plus table使用的注意事项
- (礼拜二log)java 构建层级关系的递归算法
- 礼拜三log~CSS控制文本不换行+省略号 & li宽度无效的解决方法 & 在js中获取后台变量
- 递归算法创建树
- 二叉树-递归算法
- java-递归算法2
- 递归算法2
- Spring中@Async用法
- 微信投票活动为何能帮助公众号粉丝增长?
- 裸辞太久,这些条件你还不将就?!
- SICP ex2-45
- leetcode #26 in cpp
- (礼拜三log)递归树算法2
- AppStore审核神速,大大提高了审核速度。
- 解决 Tomcat v7.0 Server at localhost was unable to start within 45 seconds
- [Ubuntu]Ubuntu下用雷鸟 Thunderbird 导入 Outlook 导出的 .pst 文件
- 写了一段时间博客后的反思... ...
- Activity的生命周期及启动模式整理
- LeetCode 128. Longest Consecutive Sequence(最长连续序列)
- Libevent源码分析-----日志和错误处理
- uva 814 The Letter Carrier's Rounds