一个递归问题

我有一棵树,数据为:

[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个回答

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐