站内搜索: 请输入搜索关键词

当前页面: 开发资料首页JSP 专题请教一个遍历某个根节点下所有子节点的方法

请教一个遍历某个根节点下所有子节点的方法

摘要: 请教一个遍历某个根节点下所有子节点的方法


第一次遇到这样的问题,有点迷茫
大致是这样的:
这是一个树形结构,现在的要求是,当选定某个节点之后,能够遍历此节点下的所有子节点。每个节点都可以有不限个数的子节点。请给出大概思路,谢谢!!


有两种方法:
1:深度优先
2:广度优先



请问这两种方法的区别在哪里呢?因为只要能够遍历到所有的子节点就可以,其他的没想过 :)


下面是随便写的,以反映算法思想为主:
1: 深度优先:
function 深度优先遍历(Tree head){

for(int i=0; i<head.childCount;i++){
}
doAction(head.Data);
}

1: 广度优先:
function 广度优先遍历(Tree head){
doAction(head.Data);

for(int i=0; i<head.childCount;i++){
}
}



广度优先写错了:

2: 广度优先:
function 广度优先遍历(Tree head){

for(int i=0; i<head.childCount;i++){
}

for(int i=0; i<head.childCount;i++){
}
}


head节点在调用递归前预先遍历



PubNode tempNode = root.firstChild;
while(tempNode != null)
{
if (showNode(tempNode))
{
drawNode(tempNode, retVal, sLeftMode);
}
tempNode = tempNode.brother;
}


谢谢各位的回帖,不过,不过,小生看不懂啊 555555555~~


倒~ 是计算机专业的话都应该接触过这种东西的
是在算法里,还是在图论里?还是在数据结构?好象都有相关的。


表结构是这样的:
每个节点有自己的ID,父节点的ID,以及一级子节点的ID,我想这样的话,应该就有办法遍历到某个节点以下的所有节点,但是昨天写的代码十分的低效,我不知道解决这种问题的经典思路是怎样的,我觉得我这个问题也算是比较典型的树形结构遍历问题了?
PS:大学学的那些东西,要不是没用心学,要不就是忘了~~


UP


递归就可以了


能不能说的详细点阿?我也知道用递归,但是,就感觉有些地方想不通


public void inOrder(Node localRoot)
{
if(localRoot!=null)
{
System.out .println(localRoot.iData );
inOrder(localRoot.leftChild );
inOrder(localRoot.rightChild );
}
}


↑返回目录
前一篇: 一段关于发送邮件的程序,请高手指点一二其中缘故!!!
后一篇: jsf中tree2 如何动态生成级联菜单?高分求例子