了了与奇奇 2011-09-29 17:38 采纳率: 100%
浏览 166
已采纳

一个递归问题

我有一棵树,数据为:

[img]http://dl.iteye.com/upload/attachment/562641/e4dbe4ef-d3ad-37a7-a332-3eaf528fff72.png[/img]
这是没有加入递归一级的情况,代码如下:

[code="javascript"]
var zNodes = new Array();

for(i=0;i<treenodes.length;i++){
if(treenodes[i].parent==0){
getNodeBy(treenodes[i]);
zNodes.push(treenodes[i]);
}
}
function getNodeBy(pnode){

for(j=0;j<treenodes.length;j++){
    if(treenodes[j].parent==pnode.catid){
        addToNode(pnode,treenodes[j]);
        //getNodeBy(treenodes[j]);<--递归
    }
}

}
function addToNode(pnode,node){
if(pnode.childs==undefined||pnode.childs==null||pnode.childs==''){
pnode.childs = new Array();
pnode.childs.push(node);
} else {
pnode.childs.push(node);
}

}

$(document).ready(function(){
$.fn.zTree.init($("#categorytree"), setting, zNodes);
});
[/code]

其实在asp.net洗面还有一级目录,但是加入递归后【即去掉注释处】得到如下结果

[img]http://dl.iteye.com/upload/attachment/562644/b5b0c5e9-5e17-3968-9a2f-134cdd695caf.png[/img]

只是在第一次获得叶子之后就返回了,没有得到兄弟节点,大家帮我看看是什么问题呢?
我的数据是这样的:
[code="javascript"]
var temp = new Object();temp.catid=11;temp.parent=10;temp.name='Asp.net';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=11';treenodes.push(temp);var temp = new Object();temp.catid=10;temp.parent=0;temp.name='C#语言';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=10';treenodes.push(temp);var temp = new Object();temp.catid=9;temp.parent=0;temp.name='C/C++语言';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=9';treenodes.push(temp);var temp = new Object();temp.catid=14;temp.parent=13;temp.name='Extjs';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=14';treenodes.push(temp);var temp = new Object();temp.catid=18;temp.parent=13;temp.name='Flash编程和RIA应用';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=18';treenodes.push(temp);var temp = new Object();temp.catid=5;temp.parent=3;temp.name='Hibernate框架';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=5';treenodes.push(temp);var temp = new Object();temp.catid=7;temp.parent=3;temp.name='iBATIS框架';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=7';treenodes.push(temp);var temp = new Object();temp.catid=8;temp.parent=3;temp.name='JavaEE服务器';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=8';treenodes.push(temp);var temp = new Object();temp.catid=16;temp.parent=13;temp.name='JavaScript';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=16';treenodes.push(temp);var temp = new Object();temp.catid=3;temp.parent=0;temp.name='Java编程和Java企业应用';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=3';treenodes.push(temp);var temp = new Object();temp.catid=15;temp.parent=13;temp.name='Jquery';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=15';treenodes.push(temp);var temp = new Object();temp.catid=4;temp.parent=3;temp.name='Spring框架';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=4';treenodes.push(temp);var temp = new Object();temp.catid=6;temp.parent=3;temp.name='Struts框架';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=6';treenodes.push(temp);var temp = new Object();temp.catid=37;temp.parent=11;temp.name='test';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=37';treenodes.push(temp);var temp = new Object();temp.catid=38;temp.parent=11;temp.name='test2';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=38';treenodes.push(temp);var temp = new Object();temp.catid=17;temp.parent=13;temp.name='UI设计';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=17';treenodes.push(temp);var temp = new Object();temp.catid=13;temp.parent=0;temp.name='Web前端技术';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=13';treenodes.push(temp);var temp = new Object();temp.catid=12;temp.parent=10;temp.name='Winform';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=12';treenodes.push(temp);var temp = new Object();temp.catid=21;temp.parent=0;temp.name='其他';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=21';treenodes.push(temp);var temp = new Object();temp.catid=19;temp.parent=0;temp.name='数据库相关';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=19';treenodes.push(temp);var temp = new Object();temp.catid=1;temp.parent=0;temp.name='未分类';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=1';treenodes.push(temp);var temp = new Object();temp.catid=20;temp.parent=0;temp.name='移动编程和手机应用开发';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=20';treenodes.push(temp);var zNodes = new Array();

[/code]

  • 写回答

1条回答

  • cyrilluce 2011-09-30 09:11
    关注

    i和j你都不定义就使用?这样会使得它们成了全局变量,从而递归时j被影响到了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 arduino控制ps2手柄一直报错
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 求chat4.0解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题