CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

帮个忙:不难;将以下的表用递归的形式写成下列的表示(200分,关键我对递归不甚了解)

楼主kw123(阿柯)2004-08-03 07:57:17 在 Java / Web 开发 提问

表结构tree表  
  0 系统目录    
  001 生产部门 1        
  001001 生产一部  
  001002 生产二部  
  002 业务部门 1        
  002001 业务部门1  
  002002 业务部门2  
  002003 业务部门3  
  003 市场部门 1        
  003001 市场部门1  
  003002 市场部门2  
  004 开发部门 1        
  004001 开发部门   1  
  005 策划部门 1        
  005001 策划部门   1  
  005002 策划部门   2  
  006 企业规划部 1        
  006001 企业规划部   1  
  006002 企业规划部   2  
  006003 企业规划部   3  
  006004 企业规划部   4  
   
  生成后的HTML语言(类似,因为我增加一些子目录而已)  
  可以将以下的语句拷贝看看运行后的结果  
  <div>  
   
        <span><input   type=checkbox   value="0"   name="Book"   checked>   系统目录</span>  
   
  <UL   id=root>  
   
   
                                    <LI><span><input   type=checkbox   name="Book"   value=001   checked>     生产部门     </span>  
   
                              <UL>  
   
                                          <LI><span><input   type=checkbox   name="Book"   value=001001   checked>     生产一部     </span>  
   
                                    <LI><span><input   type=checkbox   name="Book"   value=001002   checked>     生产二部     </span>  
   
                              <UL>  
   
                                          <LI><span><input   type=checkbox   name="Book"   value=001002001>   ssssssssssssssss     </span>  
   
                          </UL>  
                          </UL>  
   
                                              <LI><span><input   type=checkbox   name="Book"   value=002>   业务部门     </span>  
   
   
                              <UL>  
   
                                          <LI><span><input   type=checkbox   name="Book"   value=002001>   业务部门1     </span>  
   
                                          <LI><span><input   type=checkbox   name="Book"   value=002002>   业务部门2     </span>  
   
                                          <LI><span><input   type=checkbox   name="Book"   value=002003>   业务部门3     </span>  
   
                          </UL>  
   
                                    <LI><span><input   type=checkbox   name="Book"   value=003   checked>     市场部门     </span>  
   
                              <UL>  
   
                                              <LI><span><input   type=checkbox   name="Book"   value=003001>   市场部门1     </span>  
   
   
                              <UL>  
   
                                          <LI><span><input   type=checkbox   name="Book"   value=003001001>   shdhdfsg     </span>  
   
                          </UL>  
   
                                          <LI><span><input   type=checkbox   name="Book"   value=003002   checked>     市场部门2     </span>  
   
                          </UL>  
   
                                    <LI><span><input   type=checkbox   name="Book"   value=005   checked>     策划部门     </span>  
   
                              <UL>  
   
                                          <LI><span><input   type=checkbox   name="Book"   value=005001   checked>     策划部门   1     </span>  
   
                                          <LI><span><input   type=checkbox   name="Book"   value=005002   checked>     策划部门   2     </span>  
   
                          </UL>  
   
                                              <LI><span><input   type=checkbox   name="Book"   value=006>   企业规划部     </span>  
   
   
                              <UL>  
   
                                              <LI><span><input   type=checkbox   name="Book"   value=006001>   企业规划部   1     </span>  
   
   
                              <UL>  
   
                                          <LI><span><input   type=checkbox   name="Book"   value=006001001>   645334534     </span>  
   
                          </UL>  
   
                                              <LI><span><input   type=checkbox   name="Book"   value=006002>   企业规划部   2     </span>  
   
   
                              <UL>  
   
                                          <LI><span><input   type=checkbox   name="Book"   value=006002001>   dfgdfgdfgdfg     </span>  
   
                          </UL>  
   
                                          <LI><span><input   type=checkbox   name="Book"   value=006003>   企业规划部   3     </span>  
   
                                          <LI><span><input   type=checkbox   name="Book"   value=006004>   企业规划部   4     </span>  
   
  </UL>  
  </div>  
   
  //*******************************************************************  
  各位,拜托了。和以下的帖子  
  http://community.csdn.net/Expert/topic/3157/3157582.xml?temp=.4958002  
  http://community.csdn.net/Expert/topic/3154/3154002.xml?temp=.7400629  
  http://community.csdn.net/Expert/topic/3211/3211601.xml?temp=.9721186  
  http://community.csdn.net/Expert/topic/3202/3202315.xml?temp=9.105861E-03  
  http://community.csdn.net/Expert/topic/3149/3149312.xml?temp=.8500025  
   
  解决此问题者,独得200分,对于递归熟练的人,是很简单的!只需要你的举手之劳! 问题点数:20、回复次数:11Top

1 楼taoyi(无邪)回复于 2004-08-03 08:46:34 得分 0

如果仅像上面那样,嵌套循环就可以解决的Top

2 楼kw123(阿柯)回复于 2004-08-03 09:32:48 得分 0

给些意见啊!200分。没有人要?Top

3 楼kw123(阿柯)回复于 2004-08-03 10:12:01 得分 0

没有人会吗?Top

4 楼kw123(阿柯)回复于 2004-08-03 12:22:00 得分 0

看来又成了浪费的问题!  
   
  没有高手!遗憾!!!!!!!!!!!!!!  
   
  自己忙吧  
   
  唉!  
   
  人气真差Top

5 楼flyxxxxx()回复于 2004-08-03 12:35:53 得分 20

看看这里,http://community.csdn.net/Expert/TopicView.asp?id=3190905Top

6 楼TinyJimmy(Jimmy)回复于 2004-08-03 12:39:20 得分 0

你这种语气说话,   谁愿意理你.Top

7 楼kw123(阿柯)回复于 2004-08-03 12:53:46 得分 0

对于自己说说的,只是一时的气话!  
   
  可以看出,问了很久,人也很疲惫,但是时间紧迫  
  出现言语不当希望各位大侠谅解Top

8 楼kw123(阿柯)回复于 2004-08-03 14:24:35 得分 0

................Top

9 楼kw123(阿柯)回复于 2004-08-04 09:06:44 得分 0

这样吧,可否不使用递归也可以实现以上目录树的结构!!!  
   
  我的代码是  
  <%!  
  String   sId;  
  String   sName;  
  String   sTemp;  
  ResultSet   rset=null;  
  int   iCount=0;  
  int   iLen   =   0;  
  int   iLength   =   3;  
  int   iLens=3;  
  %>  
  <div>  
  <span><input   type=checkbox>企业</span>  
  <UL   id=root>  
  <%  
      rset=conn.executequery("select   *   from   tree     order   by   id");  
  //主目录信息  
      while   (rset.next())  
      {  
                sId   =   rset.getString("id");  
                iLen   =   sId.length();  
                sName=rset.getString("name");  
                ResultSet   rs   =   conn.executequery("select   count(*)   as   icount   from   tree   where   id   like:   '"+sId+"%'");  
              if(rs.next())     iCount   =   rs.getInt("icount");//得到是否有下级目录  
                if(iCount==1)  
                  {  
  %>  
                          <LI><span><input   type=checkbox   value=<%=sId%>>   <%=sName%></span>  
  <%  
                  }  
              if((iCount>1)&&((iLength-iLen==0)||(iLen   %   iLength==0)))  
                {  
  %>  
                    <LI><span><input   type=checkbox   value=<%=sId%>>   <%=sName%></span>  
                    <UL>  
  <%  
                }  
                if(iLen-iLens<0)  
                {  
  %>  
                    </UL>  
   
  <%  
                }  
   
        iLens   =   iLen;  
      }  
  %>  
  </UL>  
  </div>  
  但是在没有子目录情况下就会出错!!  
   
  如何更改?  
   
  或者有更好的解决办法Top

10 楼awaysrain(绝对零度)(既然选择了远方就要日夜前行)回复于 2004-08-04 14:04:22 得分 0

我没有连接数据库,把数据全放到了ArrayList里了,已经调试通过,你看看吧  
  嫌效率不高的话自己优化吧  
   
  TreeTest.java  
  ===================================================================  
  package   treetest;  
   
  import   java.sql.*;  
  import   java.util.*;  
   
  public   class   TreeTest   {  
      StringBuffer   buffer   =   new   StringBuffer();  
      String   result;  
      ArrayList   codeList   =   new   ArrayList();  
      ArrayList   nameList   =   new   ArrayList();  
   
      public   String   getResult()   {  
          return   buffer.toString();  
      }  
   
      public   TreeTest()   {  
           
          codeList.add("001");  
          nameList.add("生产部门");  
           
          codeList.add("001001");  
          nameList.add("生产一部");  
           
          codeList.add("001002");  
          nameList.add("生产二部");  
           
          codeList.add("002");  
          nameList.add("业务部门");  
           
          codeList.add("002001");  
          nameList.add("业务部门1");  
           
          codeList.add("002002");  
          nameList.add("业务部门2");  
           
          codeList.add("002003");  
          nameList.add("业务部门3");  
           
          codeList.add("003");  
          nameList.add("市场部门");  
           
          codeList.add("003001");  
          nameList.add("市场部门1");  
           
          codeList.add("003002");  
          nameList.add("市场部门2");  
           
          codeList.add("004");  
          nameList.add("开发部门");  
           
          codeList.add("004001");  
          nameList.add("开发部门1");  
           
          codeList.add("005");  
          nameList.add("策划部门");  
           
          codeList.add("005001");  
          nameList.add("策划部门   1");  
           
          codeList.add("005002");  
          nameList.add("策划部门   2");  
           
          codeList.add("006");  
          nameList.add("企业规划部");  
           
          codeList.add("006001");  
          nameList.add("企业规划部   1");  
           
          codeList.add("006002");  
          nameList.add("企业规划部   2");  
           
          codeList.add("006003");  
          nameList.add("企业规划部   3");  
           
          codeList.add("006003001");  
          nameList.add("企业规划部   3001");          
           
          codeList.add("006003001001");  
          nameList.add("企业规划部   3001001");          
   
          codeList.add("006003001001001");  
          nameList.add("企业规划部   3001001001");          
   
          codeList.add("006003002");  
          nameList.add("企业规划部   3002");                  
           
          codeList.add("006004");  
          nameList.add("企业规划部   4");  
          buffer.append("<div>\n");  
          buffer.append("<span><input   type=checkbox>系统目录</span>\n");  
          buffer.append("<UL   id=root>");          
          makeTree(codeList,nameList,1,null);  
          buffer.append("</UL>");                  
          buffer.append("</div>\n");          
      }  
   
      public   void   makeTree(ArrayList   cList,ArrayList   nList,int   level,String   parentCode){  
          int   len   =   level*3;  
          String   space   =   "";  
          for(int   n   =   1;   n   <   level;n++){  
              space   +=   "     ";  
          }  
   
          for(int   i   =   0;i   <   cList.size();i++)  
          {  
              String   code   =   (String)cList.get(i);  
              String   name   =   (String)nList.get(i);  
              if(code.length()   !=   len)  
                  continue;  
              if(level   ==   1){  
                  buffer.append(space   +   "<LI><span><input   type=checkbox>"   +   name   +   "</span>\n");  
                  if(hasChild(code,cList)){  
                      buffer.append(space   +   "<UL>\n");  
                      makeTree(cList,   nList,   level   +   1,   code);  
                      buffer.append(space   +   "</UL>\n");  
                  }  
              }else   if(code.startsWith(parentCode)){  
                  buffer.append(space   +   "<LI><span><input   type=checkbox>"   +   name   +   "</span>\n");  
                  if(hasChild(code,cList)){                  
                      buffer.append(space   +   "<UL>\n");  
                      makeTree(cList,   nList,   level   +   1,   code);  
                      buffer.append(space   +   "</UL>\n");  
                  }  
              }  
          }  
      }  
      public   boolean   hasChild(String   c,ArrayList   cList){  
          boolean   hasChild   =   false;  
          Iterator   iter   =   cList.iterator();  
          while(iter.hasNext()){              
              String   tmpCode   =   (String)   iter.next();  
              if((tmpCode.length()   ==   c.length()   +   3   )&&tmpCode.startsWith(c)){                  
                  return   true;  
              }  
          }  
          return   hasChild;  
      }  
   
  }  
   
  test.jsp  
  ------------------------------------------------------------------  
  <%@   page   contentType="text/html;   charset=GBK"   %>  
  <html>  
  <head>  
  <title>  
  jsp1  
  </title>  
  <SCRIPT   LANGUAGE="JavaScript">  
  <!--  
  function   checkSelect(){  
  var   elm   =   event.srcElement.parentNode;  
  checkChildrenRecurve(elm);  
  checkRootRecurve(document.getElementById("root"));  
  }  
  function   checkChildrenRecurve(elm){  
  var   li   =   elm.parentNode;  
  var   ul   =   li.lastChild;  
  if   (ul.tagName   !=   "UL")   return;  
  var   lis   =   ul.children;  
  for   (var   i=0;i<lis.length;i++){  
  lis[i].firstChild.firstChild.checked=elm.firstChild.checked;  
  checkChildrenRecurve(lis[i].firstChild)  
  }  
  }  
  function   checkRootRecurve(ul){  
  if   (ul.tagName   !=   "UL")   {  
  ul.parentNode.firstChild.firstChild.allChecked   =   ul.parentNode.firstChild.firstChild.checked;  
  ul.parentNode.firstChild.firstChild.allUnChecked   =   !ul.parentNode.firstChild.firstChild.checked;  
  return;  
  }  
  var   lis   =   ul.children;  
  var   allChecked   =   true;  
  var   allUnChecked   =   true;  
  for   (var   i=0;i<lis.length;i++){  
  checkRootRecurve(lis[i].lastChild);  
  allChecked   =   allChecked   &&   lis[i].firstChild.firstChild.checked   &&   lis[i].firstChild.firstChild.allChecked;  
  allUnChecked   =   allUnChecked   &&   !lis[i].firstChild.firstChild.checked   &&   lis[i].firstChild.firstChild.allUnChecked;  
  }  
  ul.parentNode.firstChild.firstChild.allChecked=allChecked;  
  ul.parentNode.firstChild.firstChild.allUnChecked=allUnChecked;  
  if   (allChecked   ||   allUnChecked){  
  ul.parentNode.firstChild.firstChild.checked=allChecked;  
  ul.parentNode.firstChild.firstChild.disabled=false;  
  ul.parentNode.firstChild.childStatus=false;  
  }else{  
  ul.parentNode.firstChild.firstChild.disabled=true;  
  ul.parentNode.firstChild.childStatus=true;  
  ul.parentNode.firstChild.firstChild.checked=true;  
   
  }  
  }  
   
  function   enableFirstChild(){  
  this.childStatus   =   this.firstChild.disabled;  
  this.firstChild.disabled=false;  
  }  
  function   recoverFirstChild(){  
  this.firstChild.disabled   = this.childStatus;  
  }  
  function   init(){  
  var   elms   =   document.getElementsByTagName("INPUT");  
  for   (var   i=0;i<elms.length;i++)  
  elms[i].onclick=checkSelect;  
  var   elms   =   document.getElementsByTagName("SPAN");  
  for   (var   i=0;i<elms.length;i++){  
  elms[i].onmouseover=enableFirstChild;  
  elms[i].onmouseout=recoverFirstChild;  
  }  
  }  
   
  //-->  
  </SCRIPT>  
  </head>  
  <jsp:useBean   id="treeBean"   scope="request"   class="treetest.TreeTest"   />  
  <body   onload="init()">  
  <%  
  out.println(treeBean.getResult());  
  %>  
  </body>  
  </html>  
  Top

11 楼awaysrain(绝对零度)(既然选择了远方就要日夜前行)回复于 2004-08-04 14:08:57 得分 0

抱歉,我没有仔细看数据库的结构,自己写了个函数遍历判断有没有下级,你修改一下吧用数据库中的字段吧Top

相关问题

  • 递归求部门列表
  • 递归求部门列表!
  • 表的递归查询
  • 关于广义表,树,递归
  • 单链表的递归逆向输出
  • 递归……
  • 递归?
  • 递归.........
  • 递归
  • 2个表递归查询到一个新表中,学习

关键词

  • .net
  • 递归

得分解答快速导航

  • 帖主:kw123
  • flyxxxxx

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo