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

递归其实就是一种前序遍历

 
阅读更多
import java.util.*;   
class category{   
    String name;   
    int id;   
    int pid;   
    category(String name,int id,int pid){   
        this.name=name;   
        this.id=id;   
        this.pid=pid;   
    }   
}   
public class digui {   
  String  res="";   
   public String tree(Collection co,int pid){   
         Iterator<category> it=co.iterator();   
         while(it.hasNext()){   
              category ct=it.next();   
              if(ct.pid==pid){   
                  int id=ct.id;   
                   res+=Integer.valueOf(id)+",";   
                   tree(co,id);   
              }   
         }   
         return res;   
   }   
   public static void main(String[] args){   
       Collection<category> co=new ArrayList<category>();   
       co.add(new category("食物",1,0));   
       co.add(new category("植物",2,0));   
       co.add(new category("水果",3,1));   
       co.add(new category("树",4,2));   
       co.add(new category("苹果",5,3));   
       co.add(new category("松树",6,4));   
       co.add(new category("饮料",7,1));    
       co.add(new category("红苹果",8,5));   
       digui dg=new digui();   
       String ress=dg.tree(co, 0);   
       System.out.println(ress);   
         
          
   }   
       
}  
/*
 *输出结果:1,3,5,8,7,2,4,6,
*/

用一颗树来表示就能看出它明显是一次前序遍历
                        0
            1               2
         3      7        4
         5              6
         8

分享到:
评论
8 楼 allenzou86 2008-12-22  
xuyao 写道
晕,代码从哪里copy过来的吧,你那个pid是用来说明元素是平级的。整个代码是用递归根据pid来实现前序遍历,你pid就是照着那么写的,不要误导别人啊!!!!!明白了没,就好像你用代码里写打印出来一个string是“1+1=3”,然后告诉别人1+1=3一样。。。

一点都不错  只是用迭代去实现前序遍历
7 楼 grave 2008-12-22  
xuyao 写道
晕,代码从哪里copy过来的吧,你那个pid是用来说明元素是平级的。整个代码是用递归根据pid来实现前序遍历,你pid就是照着那么写的,不要误导别人啊!!!!!明白了没,就好像你用代码里写打印出来一个string是“1+1=3”,然后告诉别人1+1=3一样。。。

这个比喻真形象..
6 楼 only_java 2008-12-21  
xuyao 写道
晕,代码从哪里copy过来的吧,你那个pid是用来说明元素是平级的。整个代码是用递归根据pid来实现前序遍历,你pid就是照着那么写的,不要误导别人啊!!!!!明白了没,就好像你用代码里写打印出来一个string是“1+1=3”,然后告诉别人1+1=3一样。。。

这位仁兄,代码是我自己写的呀!这是递归实现无限级分类的程序啊,你所说的元素是平级的是什么意思?
5 楼 xuyao 2008-12-15  
晕,代码从哪里copy过来的吧,你那个pid是用来说明元素是平级的。整个代码是用递归根据pid来实现前序遍历,你pid就是照着那么写的,不要误导别人啊!!!!!明白了没,就好像你用代码里写打印出来一个string是“1+1=3”,然后告诉别人1+1=3一样。。。
4 楼 only_java 2008-12-11  
tree方法啊,不过只是个人意见!欢迎大家拍砖!
3 楼 yywill 2008-12-11  
递归? 我没看到递归调用的方法啊?????

把iteractor当成递归了?
2 楼 sdh5724 2008-12-11  
研究精神不错, 缺少正确的结果!
1 楼 chenyongxin 2008-12-11  
晕死,递归是一种方法,它可以来实现前序,中序or后序

相关推荐

    C语言实现二叉树的前序遍历(非递归)

    前序遍历是二叉树遍历的一种方式,其顺序为“根节点 -&gt; 左子树 -&gt; 右子树”。具体而言,在遍历过程中,首先访问根节点,然后递归地遍历左子树,最后递归地遍历右子树。对于非递归的前序遍历,通常会利用栈来辅助实现...

    树的前序遍历

    在计算机科学中,树是一种非常重要的数据结构,它模拟了现实世界中许多层次关系的问题。树的遍历是理解和操作树的关键技术之一,其中前序遍历是最基础且常用的方法。本文将深入探讨树的前序遍历算法,并结合JAVA脚本...

    按前序遍历创建二叉树

    前序遍历(Preorder Traversal)是二叉树遍历的一种方法,它按照“根-左-右”的顺序访问每个节点。即首先访问根节点,然后递归地访问左子树,最后访问右子树。这种遍历方式可以方便地用字符串表示,其中空格代表没有...

    二叉树遍历--前序遍历

    本话题主要关注的是“前序遍历”,这是一种重要的遍历策略,常用于复制或打印树的结构。 **前序遍历**(Preorder Traversal)的规则如下: 1. 首先访问根节点。 2. 然后递归地访问左子树。 3. 最后递归地访问右子...

    144. 二叉树的前序遍历.zip

    二叉树的前序遍历是计算机科学中的一种基础算法,主要用于访问二叉树中的所有节点。在前序遍历中,访问顺序是先根节点,然后遍历左子树,最后遍历右子树。这种遍历方式在数据结构的学习和编程实践中有着广泛的应用。...

    关于软考-二叉树遍历问题总结前序遍历、后序遍历、中序遍历、递归遍历

    二叉树遍历是计算机科学中一种重要的数据结构操作,主要应用于树形数据结构的处理。在软考中,理解并能熟练应用二叉树的遍历方法是必不可少的技能。这里我们详细讨论前序遍历、中序遍历、后序遍历以及层次遍历这四种...

    非递归前序遍历 数据结构

    因此,非递归前序遍历提供了另一种有效的解决方案。 非递归前序遍历通常使用栈来辅助完成。以下是其基本步骤: 1. 创建一个空栈,将根节点压入栈中。 2. 当栈不为空时,执行以下操作: a. 弹出栈顶元素,访问该...

    C语言二叉树的前序遍历程序及实验报告

    实验分析显示,递归是构建和遍历二叉树的一种强大工具,而栈则用于处理非线性遍历的问题,尤其是在前序遍历中处理右子树。通过这次实验,我们可以深入理解递归算法的工作原理以及数据在栈中的进出过程,这对理解...

    二叉树的前序遍历

    二叉树是一种常见的数据结构,在计算机科学中被广泛应用于多种算法和数据处理任务中。它由节点组成,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树可以用来实现多种功能,如搜索、排序、表达式解析...

    非递归二叉树前序遍历.zip_C语言_SPO _数据结构 递归

    **前序遍历** 是一种遍历二叉树的方法,其顺序为:首先访问根节点,然后遍历左子树,最后遍历右子树。递归方法是最直观的理解方式,但递归在处理大规模数据时可能会导致栈溢出。因此,非递归(迭代)方法在这种情况...

    前序遍历树—–关于无限分类的问题

    前序遍历作为一种有效的树遍历方法,被广泛应用于解决此类问题,因为它能提供更好的性能和灵活性。本文将深入探讨前序遍历树模型,以及如何利用它来优化无限分类的处理。 首先,我们来看一下无限分类的需求。在许多...

    python实现二叉树的创建、前序遍历、中序遍历以及层次遍历

    在Python编程语言中,二叉树是一种非常重要的数据结构,它具有两个子节点,分别称为左子节点和右子节点。二叉树广泛应用于搜索、排序、文件系统、图形处理等多个领域。本教程将深入探讨如何在Python中实现二叉树的...

    4层完全二叉树的前序遍历的实现 汇编语言程序设计 课程设计

    前序遍历是二叉树遍历的一种方法,顺序为“根-左-右”。在前序遍历中,我们首先访问根节点,然后递归地对左子树进行前序遍历,最后对右子树进行前序遍历。在非递归实现中,可以使用栈来辅助完成。 汇编语言是计算机...

    二叉树前序遍历后续遍历,二叉树转换为树的算法

    前序遍历是一种访问二叉树节点的方式,其顺序是:根节点 -&gt; 左子树 -&gt; 右子树。这种遍历方式常用于复制或打印一棵树的结构。例如,对于以下二叉树: ``` 1 / \ 2 3 / \ / \ 4 5 6 7 ``` 前序遍历的结果是:`1 ...

    二叉树的前序遍历.docx

    2. **递归左子树**:如果当前节点的左子树不为空,则递归调用前序遍历函数处理左子树。 3. **递归右子树**:如果当前节点的右子树不为空,则递归调用前序遍历函数处理右子树。 递归方法的Java代码实现如下: ```...

    满二叉树的前序遍历 二叉树的建立及遍历.pdf

    前序遍历是二叉树遍历的一种,它按照“根-左-右”的顺序访问树中的每个节点。对于满二叉树,前序遍历能够按照层次顺序逐层访问节点,即从第一层的根节点开始,再到第二层的两个子节点,以此类推。前序遍历通常使用...

    二叉树递归的实现前序 中序 后序遍历

    二叉树是一种特殊的树结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。在处理二叉树时,有三种经典的遍历方法:前序遍历、中序遍历和后序遍历。 1. **前序遍历**:前序遍历的顺序是“根-左-右”。在...

    树的双亲表示法的前序遍历

    前序遍历是树遍历的一种,按照“根-左-右”的顺序访问树的每一个节点。在非递归算法中,我们通常会利用栈来实现这一过程,因为它提供了后进先出(LIFO)的特性,非常适合处理分支结构的问题。 下面是非递归前序遍历...

    C++数据结构已知二叉树的前序遍历与中序遍历结果求后序遍历.pdf

    3. 前序遍历:前序遍历是一种遍历方式,先访问当前节点,然后递归地访问左子节点和右子节点。其顺序是:当前节点 -&gt; 左子节点 -&gt; 右子节点。 4. 中序遍历:中序遍历是一种遍历方式,先访问左子节点,然后访问当前...

    链式二叉树的前序创建、递归遍历、利用堆栈的非递归遍历、前序销毁以及求二叉树的深度

    链式二叉树是一种数据结构,它以节点的形式存储数据,并通过指针连接这些节点,形成树状结构。在二叉树中,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的操作主要包括创建、遍历、销毁以及计算树...

Global site tag (gtag.js) - Google Analytics