LRJ系列 DFS实现拓扑排序(带有回路检测)

DFS实现回路拓扑排序,每一次选一个顶点进行访问,先递归访问其相邻的所有顶点,然后再访问该顶点,便可实现拓扑排序,比如A->B,A->C, A->D, B->E访问A的时候先访问BCD,那么最后的顺序肯定是AB(递归)CD, B递归之后为BE,最终的顺序为ABECD

下面举一个具体的例子,见下图


算法从V1~V5依次进行,初始的时候栈中元素为空

1.u = 1,说明当前递归V1,V1的邻居为V5,先访问V5,然后再访问V1,栈中的元素的顺序为V5 V1

2.u = 2,说明当前递归V2,V2的邻居为V1,但是V1已经访问过,所以访问V2,栈中的元素为V2 V5 V1

3.u = 3,说明当前递归V3,V3的邻居为V2, V4,V2已经访问过,故先访问V4,再访问V3,栈中的元素为V3 V4 V2 V5 V1

4.u = 4,说明当前递归V4,但是V4已经访问过了,故忽略本次递归<

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值