From 957e54eda645933c53cd1888a7e59bc0675cdc48 Mon Sep 17 00:00:00 2001 From: kyrozetera Date: Wed, 30 Jul 2025 00:51:16 -0500 Subject: [PATCH] fully isolate deleted node from neighbors before replenishing connections --- graph.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/graph.go b/graph.go index 5dba454..053e9ac 100644 --- a/graph.go +++ b/graph.go @@ -178,6 +178,9 @@ func (n *layerNode[K]) replenish(m int) { func (n *layerNode[K]) isolate(m int) { for _, neighbor := range n.neighbors { delete(neighbor.neighbors, n.Key) + } + + for _, neighbor := range n.neighbors { neighbor.replenish(m) } } @@ -487,7 +490,7 @@ func (h *Graph[K]) Delete(key K) bool { return false } - var deleteLayer = map[int]struct{}{} + deleteLayer := map[int]struct{}{} var deleted bool for i, layer := range h.layers { node, ok := layer.nodes[key] @@ -503,7 +506,7 @@ func (h *Graph[K]) Delete(key K) bool { } if len(deleteLayer) > 0 { - var newLayers = make([]*layer[K], 0, len(h.layers)-len(deleteLayer)) + newLayers := make([]*layer[K], 0, len(h.layers)-len(deleteLayer)) for i, layer := range h.layers { if _, ok := deleteLayer[i]; ok { continue