Java 实现了一个用于未加权和加权图的类

Java 实现了一个用于未加权和加权图的类,java,graph,Java,Graph,我现在正在准备技术面试,我已经开始在图表上查看我的知识。我正在使用Java从头开始实现图形 到目前为止,我已经讨论了加权图和未加权图。我想知道是否有办法将这两种图形类型合并到一个类中 我知道未加权图的方法(如果使用邻接列表)是使用Graph类对象本身上的每个顶点存储一个LinkedList数组。然后,我们可以将顶点添加到此图以创建图,从而将图中的每个顶点链接到LinkedList上的其他顶点 对于加权图方法(使用邻接列表),我们可以创建一个边类,该类保存边所连接顶点的目标、源和权重信息。然后我们

我现在正在准备技术面试,我已经开始在图表上查看我的知识。我正在使用Java从头开始实现图形

到目前为止,我已经讨论了加权图和未加权图。我想知道是否有办法将这两种图形类型合并到一个类中

我知道未加权图的方法(如果使用邻接列表)是使用Graph类对象本身上的每个顶点存储一个LinkedList数组。然后,我们可以将顶点添加到此图以创建图,从而将图中的每个顶点链接到LinkedList上的其他顶点

对于加权图方法(使用邻接列表),我们可以创建一个边类,该类保存边所连接顶点的目标、源和权重信息。然后我们可以将其存储在Graph类对象上的LinkedList中

我想在Graph类中引入一个Enum字段,这样我们就可以确定Graph是加权图还是非加权图。这看起来像这样

private LinkedList<Edge> adjList[];
private GraphType graphType;
private int vertices;
这个Graph类实现是什么样子的


干杯

它看起来与加权图类完全相同?但是,如果类型是非加权的,那么您将忽略所有加权功能/方法,只给出找到的第一条最短路径,而不是最佳加权路径。更好的解决方案可能是拥有一个具有正常功能的基图类(非加权),并拥有一个扩展基图类并添加附加功能的加权图类?啊,是的,这是一个很好的继承解决方案。真不敢相信我错过了这个。谢谢!
public enum GraphType {
    WEIGHTED,
    NON_WEIGHTED
}