diff --git a/weghting_the_tree/funcs.go b/weghting_the_tree/funcs.go index 607834a..f983966 100644 --- a/weghting_the_tree/funcs.go +++ b/weghting_the_tree/funcs.go @@ -85,26 +85,26 @@ func (root *Node) WeightingTreeWithDLL(parent *Node) map[string]*WeightedNode { weight: weight, }} dllist := dll.NewList() - dllist.PushFront(root) + dllist.PushFront(*root) for dllist.Len() > 0 { current := dllist.Front() dllist.Remove(current) nodeWeight := current.Value.(*Node).getNodeWeight() - counter[current.Value.(Node).ID].weight = nodeWeight + counter[current.Value.(*Node).ID].weight = nodeWeight // Прибавляем вес всем родительским нодам до корня - parentNode := counter[current.Value.(Node).ID].parent + parentNode := counter[current.Value.(*Node).ID].parent for { - currentNode := counter[parentNode.ID] if parentNode == nil { break } + currentNode := counter[parentNode.ID] currentNode.weight = currentNode.weight + nodeWeight parentNode = currentNode.parent } - for _, child := range current.Value.(Node).Children { + for _, child := range current.Value.(*Node).Children { counter[child.ID] = &WeightedNode{ parent: current.Value.(*Node), } diff --git a/weghting_the_tree/funcs_test.go b/weghting_the_tree/funcs_test.go index c83aac9..561e3c2 100644 --- a/weghting_the_tree/funcs_test.go +++ b/weghting_the_tree/funcs_test.go @@ -24,11 +24,11 @@ func TestNode_WeighingTreeAllAlgo(t *testing.T) { printExpectations(tt.Weights, weightTreeWithStack) assert.EqualValues(t, tt.Weights, weightTreeWithStack) }) - //t.Run("WeightingTreeWithDLL", func(t *testing.T) { - // weightTreeWithDLL := tt.Tree.WeightingTreeWithDLL(nil) - // printExpectations(tt.Weights, weightTreeWithDLL) - // assert.EqualValues(t, tt.Weights, weightTreeWithDLL) - //}) + t.Run("WeightingTreeWithDLL", func(t *testing.T) { + weightTreeWithDLL := tt.Tree.WeightingTreeWithDLL(nil) + printExpectations(tt.Weights, weightTreeWithDLL) + assert.EqualValues(t, tt.Weights, weightTreeWithDLL) + }) }) } }