请教一下 就是在java树形图结构中。我想把树形图结构中的数据通过比如for循环打印在页面上。主要全部节点的名称多要打印。请问怎么实现。谢谢各位呀!

解决方案 »

  1.   

    oracle里面的start with...connect by
      

  2.   

    一定要for吗? 递归遍历一棵树不行吗?
      

  3.   

    能不能写个代码解释一下。
    我的思路是这样的。
    就是先写个方法。里面传两个参数一个是节点的父节点的id还要组的名称。
    然后我通过这两个条件去查询它下面所用的子节点。问题就是那个父节点不能读出来呀。把它的子节点多弄出来了。父节点没有出来。这个是我的代码
    哪位能不能帮我修改一下。非常感谢String parentid=request.getParameter("paraent_Id");
        String groupId=new String(request.getParameter("groupid").getBytes("iso8859-1"));
        DevGroupInfo vo = new DevGroupInfo();
        DevGroupInfo vo1 = new DevGroupInfo();
        AllotGroupDev allot=new AllotGroupDev();
     Vector v=allot.getallotgroupdev(parentid,groupId);
         
    for(int i=0;i<v.size();i++){
      //vo = new DevGroupInfo();
       vo=(DevGroupInfo)v.get(i);
        if(groupId.equals(vo.getGroupParentId())){    
          out.print(vo.getGrouopName());
          for(int j=0;j<v.size();j++){
            //  vo1 = new DevGroupInfo();
              vo1=(DevGroupInfo)v.get(j);
          if(vo.getGroupId().equals(vo1.getGroupParentId())){
             out.print(vo1.getGrouopName());
           }    
          }
         out.println("\r\n");        
       }
    } 然后下面是方法public Vector getallotgroupdev (String parentid,String groupid) throws SQLException{
            PreparedStatement stmt=null;
            ResultSet rs=null;
            DBUtil db=new DBUtil();
            Vector vt = new Vector();
            DevGroupInfo vo = new DevGroupInfo();
            StringBuffer sqlSel = new StringBuffer();
            sqlSel.append(" select CH_PARENT_ID,CH_DGROUP_ID,CH_DGROUP_NAME from tab_dgroup " );
           
            try{
             db.beginTransaction();
                
             //vector 放所有数据
             //parent ID
             //stringBuffer XXX;
    //            for(int i=0;i<v.size();i++){
    //            // v解析
    //           
    //             if (parent ID = v.get(8..) ){
    //               xxx.append(v.名字);
    //             for (int j=0;j<v.size();j++){
    //                if(v.get(8) = v. get(j)){
    //                       //xxx.a 
    //                
    //             }
    //                       //xxx.append("\r\n");
    //           
    //           }
           
            
                stmt=db.getStatement(sqlSel.toString());
              //  stmt.setString(1,parentid);
            //    stmt.setString(2, groupid);
                rs = stmt.executeQuery();
                while(rs.next()){
                 vo = new DevGroupInfo();
                 vo.setGroupParentId(rs.getString(1));
                 vo.setGroupId(rs.getString(2));
                 vo.setGrouopName(rs.getString(3));
                 vt.add(vo);
                 //vo.getGroupId();
                 //vo.getGroupParentId();
                
                 //vt.add(rs.getString("CH_PARENT_ID")+"$%%"+rs.getString("CH_DGROUP_ID"));
                 //vt.add(vo);
                }
                
            }catch(Exception e){
                e.printStackTrace();
            }finally{
                stmt.close();
                db.closeConn();
            }
    return vt;
        }各位。帮帮忙吧!我弄了一天也没有弄出来。
    就是父节点怎么显示出来。
      

  4.   

    DTREE呀!就是从dtree中遍历出来。怎么用循环遍历呀。我挺急需解决的呀。谢谢各位了呀
      

  5.   

    要说我不要递归。在我代码基础上改动。行得通不!比如还是用for循环
      

  6.   

    表:
    ——组ID——组名——父ID——        函数参数主根结点ID : groupID
        1       北京     -1
        2      海淀区     1
        3      朝阳区     1
        4    幸福里小区   2
    1,把组ID和父ID放进容器 : V
    2, stringBuffer nodeInfo : 存放返回信息
    3,
    bFind =false;
    for(int i=0;i++;i<v.size()){ //遍历一级结点     if(groupID = v(i).parentID){  //依次遍历容器数据找到一级子结点,
                                       //如果有一级子节点,进行二级子节点判断        nodeInfo.append(v(i).组名+"%$%")  //把根节点放在每行第一个位置         for(int j=0;j++;j<v.size()){               if (v(i).groupID = v(j).parnetID){  //是否存在二级子节点                      nodeInfo.append(v(j).组名+"%$%");  
                       }
                 }
            nodeInfo.append("\r\n");     }   
    }
    4.返回字符串:nodeInfo                ****运行结果***:北京%$%海淀区%$%幸福里小区
                                    北京%$%朝阳区
                       帮我弄弄。谢谢大家了