我在Java中将图形数据结构实现为地图图。
Graph对象是数据(键)和所有顶点(值)
的映射public class GraphAdjMap<T> implements IGraph<T> {
private Map<T, Vertex<T>> vertices = new HashMap<T, Vertex<T>>();
每个顶点都是边的映射,其中key是目标顶点,value是边缘对象:
class Vertex<T> {
private T data;
private Map<T, Edge<T>> edges = new HashMap<T, Edge<T>>();
Edge是一个简单的值对象:
public class Edge<T> {
private T destination;
private int weight;
通过这种结构,我可以轻松快速地回答很多问题,例如: 是否连接了2条边? 顶点的所有边缘是什么? 这个顶点是否连接到另一个顶点? 一个顶点有多少条边? 等...
这是一个很好的实现还是我错过了什么?
谢谢, 克里斯。