public void RemoveZeroDegreeNodes() { var toDelete = OutgoingEdges.Keys.Where(vertex => !OutgoingEdges[vertex].Any() && !IncomingEdges[vertex].Any()); foreach (var vertex in toDelete) { OutgoingEdges.Remove(vertex); IncomingEdges.Remove(vertex); } }
/// <summary> /// Removes the edge. /// </summary> /// <param name="edge">The edge.</param> /// <returns>This</returns> public Vertex <T> RemoveEdge(Edge <T> edge) { if (edge.Sink == this) { IncomingEdges.Remove(edge); } else { OutgoingEdges.Remove(edge); } return(this); }
public bool RemoveVertex(TVertex vertex) { if (!OutgoingEdges.ContainsKey(vertex)) { return(false); } foreach (var other in OutgoingEdges[vertex].Keys) { IncomingEdges[other].Remove(vertex); } foreach (var other in IncomingEdges[vertex].Keys) { OutgoingEdges[other].Remove(vertex); } OutgoingEdges.Remove(vertex); IncomingEdges.Remove(vertex); return(true); }
public bool Remove(DirectedEdge <T, DirectedVertex <T> > edge) { return(IncomingEdges.Remove(edge) | OutgoingEdges.Remove(edge)); }