public void RemoveEdge(Edge _Edge)
        {
            var hEndPoints = _Edge.GetPossibleEnpoints();

            hEndPoints[0].RemoveEdge(_Edge);
            if (hEndPoints.Length > 1)
            {
                hEndPoints[1].RemoveEdge(_Edge);
            }

            FEdgeIndices.Remove(_Edge);
            UpdateNeighbourInfoInNodes(); // Update der Kanten-Infos
        }
        public void AddEdge(Edge _Edge)
        {
            FEdgeIndices.Add(_Edge);


            // Die Kante noch in den Knoten ergänzen
            if (_Edge is DirectedEdge)
            {
                var hStartNode = ((DirectedEdge)_Edge).GetEdgeSource();
                hStartNode.AddEdge(_Edge);
            }
            else if (_Edge is UndirectedEdge)
            {
                var hEndPoints = _Edge.GetPossibleEnpoints();
                var hNodeA     = hEndPoints[0];
                var hNodeB     = hEndPoints[1];
                hNodeA.AddEdge(_Edge);
                hNodeB.AddEdge(_Edge);
            }

            UpdateNeighbourInfoInNodes();
        }