更改此邻接列表实现的实现的最佳方法是什么 包括重量'在两个顶点之间?
如果我稍后在之前制作的两个相同顶点之间添加边缘,我只想增加它的重量。
http://www.keithschwarz.com/interesting/code/edmonds-matching/UndirectedGraph.java.html
答案 0 :(得分:1)
您可以将节点存储为节点映射(节点,权重)对(也可以是地图),而不是将图形存储为节点集合作为节点集合 而不是
private final Map<T, Set<T>> mGraph = new HashMap<T, Set<T>>();
它将是
private final Map<T, Map<T, Integer>> mGraph = new HashMap<T, Map<T, Integer>>();
在当前实现中,添加边缘只是将一个新的插入到集合中,使用权重,您必须读取当前权重,增加它并存储在地图中。 请注意在移除边缘时要检查的角落情况,如果它的重量变为0,则应从地图中删除该条目。