有向图的寻径算法(dfs)

本文介绍了如何使用深度优先搜索(DFS)解决有向图的寻径问题。考虑到节点数量多且单个节点的相邻节点不多,选择了邻接表作为存储结构。虽然目前没有涉及节点间的距离(权重),但该实现具备扩展到加权图的可能性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近需要完成一个点之间寻径的任务。基本可以抽象为有向图的寻径,于是复习一下。
有向图的存储方法有两种,邻接表或者邻接矩阵,对于点来说,总的点数目较多且单个点的相邻点数目不会太多,所以选择用邻接表来实现。后续可能会引入点间距离(权重),故选用dfs方式

public class Line {

	public String start;

	public String end;

	public String getStart() {
		return start;
	}

	public void setStart(String start) {
		this.start = start;
	}

	public String getEnd() {
		return end;
	}

	public void setEnd(String end) {
		this.end = end;
	}

	public Line(String start,String end) {
		this.start=start;
		this.end=end;
	}

}
//构建邻接表   使用的是String故使用Map若是转换为int 使用数组更佳
	private static List<List<String>> getAllRoad(String start, String end, List<Line> datas) {		
		Map<String, List<String>> ljb = new HashMap<String, List<String>>(6);
		for (Line line : datas) {
			if (ljb.containsKey(line.start)) {
				ljb.get(line.start).add(line.end);
			} else {
				List<String>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值