拓扑排序(其实是一种依赖关系):对于有向且无环的图来说,当前这个节点的依赖来其之前已经完成了。

下面附上一个图让大伙更好的理解:

拓扑排序算法分析(通俗易懂)

比如这个图:B需要依赖A才能完成,A需要依赖C和D才能完成,而D需要依赖F才能完成,画出图就如上所示:

而最终的拓扑排序序列则为:FDCAB(不难发现,入度最小的先遍历)


基本思想:

1. 先把入度为0 的节点找到并打印

2. 删掉入度为0的节点,继续循环1的步骤,直至图为null。


基本思想是很简单的,下面是程序实现流程:

1. 定义一个队列和一个HashMap(HashMap用来存储Node节点和该节点入度的值);

2. 遍历所有的节点,把所有的节点的入度和node值存放到HashMap中去,并将入度为0的节点存放到队列queue中去;

3.定义一个List数组,用来存放Node,并作为最后的节点输出 ;

4. 取出队列中的一个元素,并将该元素添加到result数组中 ;

5. 遍历上面取出的元素的next节点,将其所有next节点的入度都-1 如果有一些节点的入度变为0时,把他们放进去队列queue里面; 而如果上面取出的元素没有next的话,继续从队列queue中poll()出新的元素

(建议大家按照程序一起看,容易理解一些)下面附上程序源码:

拓扑排序算法分析(通俗易懂)

喜欢的记得点个赞哦~

相关文章:

  • 2021-11-24
  • 2022-12-23
  • 2022-12-23
  • 2021-12-16
  • 2021-06-10
  • 2022-12-23
  • 2021-07-30
  • 2022-01-23
猜你喜欢
  • 2021-09-03
  • 2021-05-28
  • 2022-12-23
  • 2021-04-16
  • 2021-12-13
  • 2022-12-23
相关资源
相似解决方案