繁体   English   中英

查找有向图中是否连接了两个节点

[英]Find if two nodes are connected in a directed graph

给定使用HashMap<String, String>实现的有向图,请确定是否连接了两个节点。

例如:

"b"--->"a"<---"c"

Map<String, String> graph = new HashMap<>();
map.put("b", "a");
map.put("c", "a");

"b""c"已连接。

我找到了一个帖子 ,其中的图是有向图,但解决方案是查找两个节点之间是否存在路径。 我的问题有所不同,因为即使在"b""c"之间没有路径,上述示例中的"b""c"也被视为已连接。

您的表示与您提供的链接中使用的表示之间没有真正的区别。 他们使用了一个LinkedList<Integer>数组,该数组将所有相邻节点映射到每个节点。 您还将获得此信息,地图的每个键都链接到所有相邻节点。

但首先请注意,您的陈述受到很大限制。 您将一个节点限制为只有一个邻居。 您可以通过将value类的类型更改为Set<String>而不是String来进行更改。

只需使用您的结构重新实现BFS或DFS,或将您的版本转换为它们的版本并直接使用其代码。 但是,第一个解决方案会更快,但是需要您了解这些搜索的工作方式。 但请不要害怕,它们很简单,并且在线上有不错的文章,例如Wikipedia:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM