`
gotyou
  • 浏览: 26528 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

递归算法-无限级树形递归

阅读更多

无限级树形递归,实际算法只有几行就可完成递归操作。
递归的核心思想是函数自身调用。代码:

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 + "]";
    }
   
}

分享到:
评论

相关推荐

    treeview递归无限级树形菜单(递归方式)

    总结来说,创建无限级树形菜单的核心在于使用递归算法处理数据,并利用HTML和CSS构建交互式视图。通过理解这个过程,你可以轻松地适应各种应用场景,无论是前端网页还是后端接口,都能游刃有余地处理树形数据结构。...

    无限级树形菜单(支持多选)

    综上所述,无限级树形菜单的实现涉及数据结构、递归算法、前端渲染、用户交互等多个方面,而多选功能的加入则增加了菜单的实用性。理解和掌握这些知识点,对于开发高效、友好的用户界面至关重要。在“MyApplication2...

    动态实现无限级树形菜单

    实现动态无限级树形菜单的关键在于数据结构和遍历算法。以下是一些关键步骤: 1. **数据模型设计**:创建一个数据模型来存储菜单的信息,通常包括ID、名称、父ID、链接地址等属性。父ID用于建立父子关系,这样就能...

    无限级树形(三层开发)源码

    在无限级树形结构的实现中,有几种常见的算法可以用来遍历和操作树,例如深度优先搜索(DFS)和广度优先搜索(BFS)。DFS通常使用递归实现,而BFS则常通过队列来完成。在.NET中,可以使用递归方法或栈/队列数据结构...

    不用递归实现的无限级树型菜单

    这样,我们可以通过遍历所有记录,根据父节点ID组织成树形结构。 接着,`Tree.aspx`和`Body.aspx`可能是展示树型菜单的页面。在这些页面中,可以使用JavaScript或者服务器端代码来解析XML数据并构建DOM元素。由于不...

    TreeView用递归实现无限级树.rar

    这个"TreeView用递归实现无限级树.rar"压缩包文件很可能是包含了一个或多个示例,教你如何在C#中使用递归方法来构建一个可以无限扩展的TreeView,用于显示多层的数据结构,例如数据库中的分类或者层级关系。...

    ASP.NET-[其他类别]无限级树形(三层开发)源码.zip

    无限级树形结构通常使用递归算法来实现。在ASP.NET中,可以使用控件如TreeView或Repeater配合数据绑定来展示树形结构。在处理无限级树时,需要注意性能优化,比如使用延迟加载(懒加载)技术,只在需要时加载子节点...

    ASP.NET源码——无限级树形(三层开发)源码.zip

    在实际开发中,为了实现无限级树形结构,开发者可能采用了递归算法,每次获取当前节点的所有子节点,然后对每个子节点进行相同的操作,直到没有子节点为止。此外,他们可能还利用了缓存机制来优化性能,避免频繁的...

    无限级树形(三层开发)源码.zip

    通过上述分析,我们可以看出"无限级树形(三层开发)源码"涵盖了前端开发、后端设计、数据库操作、数据结构、算法等多个IT领域的知识点。这个压缩包中的源码应该提供了完整的实现,对于学习和理解此类问题的解决方案...

    [其他类别]无限级树形(三层开发)源码_classmanage.zip

    标题中的“[其他类别]无限级树形(三层开发)源码_classmanage.zip”表明这是一个关于无限级树形结构的编程源代码,适用于多层或层级关系的数据管理。"其他类别"可能意味着它不局限于特定的编程语言或技术栈,而是通用...

    无限级树(Java递归)

    本文将深入解析一个基于Java实现的无限级树形结构,并采用递归方式构建。该树形结构主要用于展示具有层级关系的数据,例如网站分类目录等。通过递归查询数据库中的数据,并通过前端动态加载的方式呈现树形结构。 ##...

    多叉树结合JavaScript树形控件实现无限级树形结构(一种构建多级有序树形结构JSON(或XML)数据源的方法)

    3. 无限级树形结构:这种结构允许数据无限级别地展开,常用于数据库中表示层级关系,如父子关系,通常由 id 和 parentId 字段定义。 【描述】涉及的知识点: 1. 构建 JSON 数据源:树形控件需要将数据库中的层次...

    无限级树形源码【三层开发的】|下载的树形结构(别处下载)

    总的来说,"无限级树形源码"涉及到了软件设计的多个层面,包括前端UI交互、后端业务逻辑处理和数据库操作,以及数据结构和算法的应用。具体到"classManage",可能还需理解教育领域的业务流程和需求,以实现功能完善...

    基于内存多叉树的Ext JS无限级树形菜单实现方案

    为了实现无限级树形菜单,首先需要将数据库中的层次数据转化为内存多叉树,然后通过遍历算法将这个多叉树转换为JSON格式。具体步骤如下: - **读取层次数据**:使用数据库查询语句获取组织结构数据,这些数据通常...

    多叉树结合JavaScript树形控件实现无限级树形菜单(一种构建多级有序树形结构JSON(或XML)数据源的方法).pdf

    总之,通过合理的设计和算法,可以将数据库中的无限级层次数据转换为适配JavaScript树形控件的JSON数据源,实现无限级树形菜单的展示。这种方法不仅适用于Ext JS,也可以应用于其他支持JSON数据的JS树形控件。解决这...

    无限级树形(三层开发)源码

    在IT行业中,构建无限级树形结构是一种常见的需求,特别是在数据组织、菜单系统、权限管理等领域。本项目“无限级树形(三层开发)源码”提供了一个完整的解决方案,使用了C#编程语言和.NET框架,遵循了三层架构的...

    js无限级分类递归

    当然该方法是支持无限级父子关系。修改之前的源码均来自网上,本人只是对当前做了整合和修改。当前你所有的记录中需要包含id和parentId,也就是有父子关系即可。你的数据源必须是一维的json数组。zNodes=[ {id:1,...

    [其他类别]无限级树形菜单(Sql数据库)_mytree(ASP.NET源码).rar

    1. **无限级树形菜单**:在ASP.NET中,实现无限级树形菜单通常会涉及到递归算法,如预序遍历或后序遍历。数据结构可能用到自引用的表,每个节点都有一个父节点ID来表示层级关系。 2. **Sql数据库**:数据库设计可能...

    树形目录的无限级扩展

    - **递归**:在编程中,处理无限级树形目录时,经常使用递归算法来遍历、创建或删除目录结构。 - **路径名**:每个文件在树形结构中有唯一的路径名,由从根目录开始到该文件的所有父目录名和文件名组成,用正斜杠(/...

Global site tag (gtag.js) - Google Analytics