数据结构中关于图的遍历 ( 积分: 50 )

  • 主题发起人 主题发起人 zhfeng
  • 开始时间 开始时间
Z

zhfeng

Unregistered / Unconfirmed
GUEST, unregistred user!
大学里学的数据结构大家还有印象吧,现在有一个图,我要用delphi遍历出来,大家有这个方面的递归算法吗?谢谢拉!!!
 
大学里学的数据结构大家还有印象吧,现在有一个图,我要用delphi遍历出来,大家有这个方面的递归算法吗?谢谢拉!!!
 
大家都哪里去了?!?!!?会的大哥指教一下拉
 
map[5,5] =
{{0,AB,AC,AD,AE},{BA,0,BC,BD,BE},{CA,CB,0,CD,CE}{DA,DB,DC,0,DE}{EA,EB,EC,ED,0}}

采用深度优先方法

VisitMap (int nBegin)
{
int bVisited[MAX_NODE] = {0}
//0 未遍历 1 己遍历 2 己遍历,选中的节点
static nDistane = 0;
for (int i =0
i < MAX_NODE
i++)
{
if (!bVisited) continue
//如果己遍历
nDistane += map[nBegin,i];
if (nDistane == 100)//100公里
{
bVisited = 2;
}
VisitMap(i);
nDistane -= map[nBegin,i];
}

}
 
有没有人继续用深度遍历方法再来?!
 
我有A Strat的
 
不知道我是不是说得太抽象
现在我举个例子.我在数据库里有一张两个字段的表
pid id
1 2
1 3
1 4
2 5
2 6
3 6
4 7
5 8
6 8
7 9

用图表现出来就是
1
/ | /
/ | /
2 3 4
|/ | |
| /| |
5 6 7
/ / |
8 9
现在我要用深度遍历的方法得到四条路径:
1 2 5 8
1 2 6 8
1 3 6 8
1 4 7 9

现在很清楚了,大家踊跃发言!!
 
图是向下有向的
 
深度和广度学完忘了, 也没复习, 前一阵看了A* 觉得很好。 给你建议:

定义2个表, 开启表和关闭表。 分别存放搜索的节点, 每个节点有它的父节点(根节点的父节点为空)。 根据 f = g + h 的公式 取出最小F值的节点。 依次遍历, 新节点放在开启表,已经遍历的放在关闭表。可以找到终点。。

这里表的意思是列表,如容器。
 
谁还有好的方法,大家继续给 点意见
 
我觉得主要是要先把树建好,然后遍历得到你要的就方便了,一个第归调用就可以得到了
或者不建数的话,就用链表连接来做,也是比较方便的
 
后退
顶部