当前页面: 开发资料首页 → 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 );
}
}