无限级树形递归,实际算法只有几行就可完成递归操作。
递归的核心思想是函数自身调用。代码:
public class UnlimitTreeRecursive{
private static java.util.List<SingleNode> list
= new java.util.ArrayList<SingleNode>();
private static String ids="";
public static String recursive(java.util.Collection<SingleNode> c,Integer pid){
if(c==null || c.size()<2)
return "";
java.util.Iterator<SingleNode> it = c.iterator();
while(it.hasNext()){
SingleNode sn = it.next();
if(sn.getPid()==pid){
list.add(sn);
ids += sn.getId()+",";
recursive(c,sn.getId());
}
}
return ids;
}
public static void main(String[] args)
{
//测试递归结果
SingleNode sn1 = new SingleNode(1,0,"食物");
SingleNode sn2 = new SingleNode(5,1,"肉类");
SingleNode sn3 = new SingleNode(8,1,"水果");
SingleNode sn4 = new SingleNode(10,0,"淡水鱼");
SingleNode sn5 = new SingleNode(16,5,"猪肉");
SingleNode sn6 = new SingleNode(4,5,"牛肉好吃");
SingleNode sn7 = new SingleNode(13,8,"火龙果");
SingleNode sn8 = new SingleNode(3,16,"前腿肉");
SingleNode sn9 = new SingleNode(2,8,"苹果");
SingleNode sn10 = new SingleNode(11,10,"草鱼");
SingleNode sn11 = new SingleNode(14,2,"青苹果");
java.util.List<SingleNode> list = new java.util.ArrayList<SingleNode>();
list.add(sn1);list.add(sn4);list.add(sn7);list.add(sn9);list.add(sn11);
list.add(sn2);list.add(sn5);list.add(sn8);list.add(sn10);
list.add(sn3);list.add(sn6);
UnlimitTreeRecursive.recursive(list, 0);
System.out.println(UnlimitTreeRecursive.ids);
for(SingleNode sn:UnlimitTreeRecursive.list)
System.out.println(sn);
}
}
/**
* 节点类型定义
*/
class SingleNode{
private Integer id; //节点ID
private Integer pid; //父节点ID
private String name; //节点名称
public SingleNode(){}
public SingleNode(Integer id,Integer pid,String name){
this.setId(id);
this.setPid(pid);
this.setName(name);
}
public Integer getId(){
return id;
}
public void setId(Integer id){
this.id = id;
}
public Integer getPid() {
return pid;
}
public void setPid(Integer pid){
this.pid = pid;
}
public String getName(){
return name;
}
public void setName(String name) {
this.name = name;
}
public String toString() {
return "SingleNode [id=" + id + ", name=" + name + ", pid=" + pid + "]";
}
}
相关推荐
总结来说,创建无限级树形菜单的核心在于使用递归算法处理数据,并利用HTML和CSS构建交互式视图。通过理解这个过程,你可以轻松地适应各种应用场景,无论是前端网页还是后端接口,都能游刃有余地处理树形数据结构。...
综上所述,无限级树形菜单的实现涉及数据结构、递归算法、前端渲染、用户交互等多个方面,而多选功能的加入则增加了菜单的实用性。理解和掌握这些知识点,对于开发高效、友好的用户界面至关重要。在“MyApplication2...
实现动态无限级树形菜单的关键在于数据结构和遍历算法。以下是一些关键步骤: 1. **数据模型设计**:创建一个数据模型来存储菜单的信息,通常包括ID、名称、父ID、链接地址等属性。父ID用于建立父子关系,这样就能...
在无限级树形结构的实现中,有几种常见的算法可以用来遍历和操作树,例如深度优先搜索(DFS)和广度优先搜索(BFS)。DFS通常使用递归实现,而BFS则常通过队列来完成。在.NET中,可以使用递归方法或栈/队列数据结构...
这样,我们可以通过遍历所有记录,根据父节点ID组织成树形结构。 接着,`Tree.aspx`和`Body.aspx`可能是展示树型菜单的页面。在这些页面中,可以使用JavaScript或者服务器端代码来解析XML数据并构建DOM元素。由于不...
这个"TreeView用递归实现无限级树.rar"压缩包文件很可能是包含了一个或多个示例,教你如何在C#中使用递归方法来构建一个可以无限扩展的TreeView,用于显示多层的数据结构,例如数据库中的分类或者层级关系。...
无限级树形结构通常使用递归算法来实现。在ASP.NET中,可以使用控件如TreeView或Repeater配合数据绑定来展示树形结构。在处理无限级树时,需要注意性能优化,比如使用延迟加载(懒加载)技术,只在需要时加载子节点...
在实际开发中,为了实现无限级树形结构,开发者可能采用了递归算法,每次获取当前节点的所有子节点,然后对每个子节点进行相同的操作,直到没有子节点为止。此外,他们可能还利用了缓存机制来优化性能,避免频繁的...
通过上述分析,我们可以看出"无限级树形(三层开发)源码"涵盖了前端开发、后端设计、数据库操作、数据结构、算法等多个IT领域的知识点。这个压缩包中的源码应该提供了完整的实现,对于学习和理解此类问题的解决方案...
标题中的“[其他类别]无限级树形(三层开发)源码_classmanage.zip”表明这是一个关于无限级树形结构的编程源代码,适用于多层或层级关系的数据管理。"其他类别"可能意味着它不局限于特定的编程语言或技术栈,而是通用...
本文将深入解析一个基于Java实现的无限级树形结构,并采用递归方式构建。该树形结构主要用于展示具有层级关系的数据,例如网站分类目录等。通过递归查询数据库中的数据,并通过前端动态加载的方式呈现树形结构。 ##...
3. 无限级树形结构:这种结构允许数据无限级别地展开,常用于数据库中表示层级关系,如父子关系,通常由 id 和 parentId 字段定义。 【描述】涉及的知识点: 1. 构建 JSON 数据源:树形控件需要将数据库中的层次...
总的来说,"无限级树形源码"涉及到了软件设计的多个层面,包括前端UI交互、后端业务逻辑处理和数据库操作,以及数据结构和算法的应用。具体到"classManage",可能还需理解教育领域的业务流程和需求,以实现功能完善...
为了实现无限级树形菜单,首先需要将数据库中的层次数据转化为内存多叉树,然后通过遍历算法将这个多叉树转换为JSON格式。具体步骤如下: - **读取层次数据**:使用数据库查询语句获取组织结构数据,这些数据通常...
总之,通过合理的设计和算法,可以将数据库中的无限级层次数据转换为适配JavaScript树形控件的JSON数据源,实现无限级树形菜单的展示。这种方法不仅适用于Ext JS,也可以应用于其他支持JSON数据的JS树形控件。解决这...
在IT行业中,构建无限级树形结构是一种常见的需求,特别是在数据组织、菜单系统、权限管理等领域。本项目“无限级树形(三层开发)源码”提供了一个完整的解决方案,使用了C#编程语言和.NET框架,遵循了三层架构的...
当然该方法是支持无限级父子关系。修改之前的源码均来自网上,本人只是对当前做了整合和修改。当前你所有的记录中需要包含id和parentId,也就是有父子关系即可。你的数据源必须是一维的json数组。zNodes=[ {id:1,...
1. **无限级树形菜单**:在ASP.NET中,实现无限级树形菜单通常会涉及到递归算法,如预序遍历或后序遍历。数据结构可能用到自引用的表,每个节点都有一个父节点ID来表示层级关系。 2. **Sql数据库**:数据库设计可能...
- **递归**:在编程中,处理无限级树形目录时,经常使用递归算法来遍历、创建或删除目录结构。 - **路径名**:每个文件在树形结构中有唯一的路径名,由从根目录开始到该文件的所有父目录名和文件名组成,用正斜杠(/...