有向图中基于深度优先搜索的顶点排序

本文介绍了如何利用深度优先搜索(DFS)对有向图的顶点进行排序,包括前序、后序和逆后序三种顺序。通过DFS遍历图,并在递归的不同阶段将顶点加入数据结构,可以得到不同的排序序列。提供了DepthFirstOrder类的API,包括获取先序、后序和逆后序结构的方法。
摘要由CSDN通过智能技术生成

它的基本思想是深度优先搜索正好会只访问每个顶点一次。如果将dfs()的参数顶点保存在一个数据结构中,遍历这个数据结构实际上就能访问图中的所有顶点,遍历的顺序取决于这个数据结构的性质以及是在递归之前还是之后进行保存。在典型的应用中,主要有三种排序顺序:
前序 :在递归调用之前将顶点加入队列
后序:在递归调用之后将顶点加入队列
逆后序:在递归调用之后将顶点压入栈
API:
public class DepthFirstOrder
DepthFirstOrder(Digraph G) //使用深度优先遍历来保存各个顶点的先序,后序,逆后序
Iterable pre() //获取先序结构
Iterable post() //获取后序结构
Iterable reversePost() //获取逆后序结构
具体实现如下:

public class DepthFirstOrder {
    private Queue<Integer> pre;                             //所有顶点的前序排序
    private Queue<Integer> post;                                //所有顶点的后序排序

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值