From 685eeec2aa7ba2137d35746eb181c438b4b09896 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D0=B4=D1=80=D0=B5=D0=B9=20=D0=98=D0=B2=D0=B0?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2?= Date: Thu, 26 Sep 2024 18:48:27 +0300 Subject: [PATCH] Fix stack algo --- weghting_the_tree/funcs.go | 19 ++++++++++--------- weghting_the_tree/funcs_test.go | 1 - 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/weghting_the_tree/funcs.go b/weghting_the_tree/funcs.go index 5637965..607834a 100644 --- a/weghting_the_tree/funcs.go +++ b/weghting_the_tree/funcs.go @@ -44,7 +44,7 @@ func (root *Node) WeightingTreeWithRecursion(parent *Node) map[string]*WeightedN func (root *Node) WeightingTreeWithStack(parent *Node) map[string]*WeightedNode { weight := root.getNodeWeight() - counter := map[string]*WeightedNode{root.ID: { + res := map[string]*WeightedNode{root.ID: { weight: weight, }} stack := []*Node{root} @@ -53,29 +53,30 @@ func (root *Node) WeightingTreeWithStack(parent *Node) map[string]*WeightedNode stack = stack[:len(stack)-1] nodeWeight := current.getNodeWeight() - counter[current.ID].weight = nodeWeight + res[current.ID].weight = nodeWeight // Прибавляем вес всем родительским нодам до корня + parentNode := res[current.ID].parent for { - if parent == nil { + if parentNode == nil { break } - currentNode := counter[parent.ID] + currentNode := res[parentNode.ID] currentNode.weight = currentNode.weight + nodeWeight - parent = currentNode.parent + parentNode = currentNode.parent } - counter[current.ID].node = current + res[current.ID].node = current if len(current.Children) > 0 { - counter[current.ID].children = current.Children + res[current.ID].children = current.Children } for _, child := range current.Children { - counter[child.ID] = &WeightedNode{ + res[child.ID] = &WeightedNode{ parent: current, } stack = append(stack, child) } } - return counter + return res } func (root *Node) WeightingTreeWithDLL(parent *Node) map[string]*WeightedNode { diff --git a/weghting_the_tree/funcs_test.go b/weghting_the_tree/funcs_test.go index 15bf546..c83aac9 100644 --- a/weghting_the_tree/funcs_test.go +++ b/weghting_the_tree/funcs_test.go @@ -8,7 +8,6 @@ import ( "github.com/stretchr/testify/assert" ) - func TestNode_WeighingTreeAllAlgo(t *testing.T) { for name,tt := range map[string]TestTree{ "Ordinary VFS tree": getTestTree(3, 3, nil),