public AdjacencyList <T, TNode> Reverse() { var result = new AdjacencyList <T, TNode>(_nodeFactory); foreach (var adjacency in _adjacencies.Values) { foreach (var edge in adjacency) { result.AddEdge(edge.Target.Value, edge.Source.Value, edge.Weight); } } return(result); }
public AdjacencyList <T, TResultNode> Transform <TResultNode>(Func <int, T, TResultNode> nodeFactory) where TResultNode : Node <T> { var result = new AdjacencyList <T, TResultNode>(nodeFactory); foreach (var adjacency in _adjacencies.Values) { foreach (var edge in adjacency) { result.AddEdge(edge.Source.Value, edge.Target.Value, edge.Weight); } } return(result); }