数据库表中有如下记录:1 -1
7                 1
8 7
9 8
10 8
11 8
12 7
13 7
14 1
17 1
18 7
我想用java递归实现如下输出结果:
1 -1
7 1
8 7
12 7
13 7
18 7
9 8
10 8
11 8
14 1
17 1这个递归函数怎么写?谢谢

解决方案 »

  1.   

    不太明白你的用意..如果要输出这些结果..没有必要用递归.有时递归的效果并不见得快.
    觉得你直接用for就可以了
      

  2.   

    晕了,CSDN怎么这样,把我发的贴子变得乱七八糟的,本来说都不够清楚,现在连我写的都变得乱七八糟了.重贴一下:1 -1
    7                  1
    8 7
    9 8
    10 8
    11 8
    12 7
    13 7
    14 1
    17 1
    18 7
    我想要用递归实现如下输出结果:
    1 -1
    7 1
    8 7
    9 8
    10 8
    11 8
    12 7
    13 7
    18 7
    14 1
    17 1
      

  3.   

    嗯,是两列数据,列名分别为ID,PID,我想说的是:PID为-1代表根,只有子节点,根的下一个叶子节点就是(7,14,17),也就是PID为1的叶子节点,以此类推,输出结果的规律应该是:
    按ID从小到大的顺序输出来,有叶子节点的,也要把叶子节点按ID从小到大的顺序输出来
      

  4.   

    下面这句也许可以
    SELECT * FROM T_TABLE_NAME T START BY T.PID=-1 CONNECT BY T.PID=T.ID
    还不行的话就上百度上搜一下
      

  5.   

    楼上,你把我杀了吧,我第一次见到这样的SQL语句
      

  6.   

    '按ID从小到大的顺序输出来,有叶子节点的,也要把叶子节点按ID从小到大的顺序输出来
    '这句话还是不明白,到底是怎么样的顺序。比如,相同层的要按照ID从小到大的顺序。
      

  7.   

    楼上用的是Oracle中的语句而已,估计LZ一般用SQL Server
      

  8.   

    你的数据库里存放的是一棵树的存储结构.用中序偏历就可以输入你的结果来
    我给你提供一个基本的算法.public class out {
       public void outTree(node tree){
       if(tree!=null){
       outTree(tree.lefttree);
       System.out.println(tree.ID);
       System.out.println(tree.PID);
       outTree(tree.righttree);
       }
       }}class node{
    public int ID;
    public int PID;
    node lefttree;
    node righttree;
    }调用outTree(根节点)就行了
    至于node类你自己去完成吧.应该知道左子树与右子树的概念吧
      

  9.   

    SQL Server 我就不清楚了,不过在oracle中这样的语句是可行的.我们在应用中已经实践过
      

  10.   

    晕倒,看来还是你的表述不够清楚,大家沟通不好而已,你被大家逼疯了,还是大家被你逼疯了暂且不论,反正我看到楼上的几位还是很热心的,不只来了一遍,说明还是挺关注的。你只要把问题描述清楚了,我相信你的问题肯定马上得到解决!树的遍历算法很多的,一般都是一次性,从数据库中取出来,然后再Java中用递归,算法很多,学过一点数据结构和算法的人都应该知道,关于排序,我还不清楚到底要怎么样排序?
      

  11.   

    private List sortList(List list,List returnList,String rootOrgCode){
    for(Iterator it=list.iterator();it.hasNext();){
    OrganizeVO org = (OrganizeVO)it.next();
    if(rootOrgCode.equals(org.getParentCode())){
    returnList.add(org);
    sortList(list,returnList,org.getCode());
    }
    }
    return returnList;
    }
    以前写的,效率不明。