diff --git a/trees/redblacktree/redblacktree.go b/trees/redblacktree/redblacktree.go index f9c9bc9..b012d24 100644 --- a/trees/redblacktree/redblacktree.go +++ b/trees/redblacktree/redblacktree.go @@ -62,9 +62,10 @@ func NewWithStringComparator() *Tree { // Put inserts node into the tree. // Key should adhere to the comparator's type assertion, otherwise method panics. func (tree *Tree) Put(key interface{}, value interface{}) { - insertedNode := &Node{Key: key, Value: value, color: red} + var insertedNode *Node if tree.Root == nil { - tree.Root = insertedNode + tree.Root = &Node{Key: key, Value: value, color: red} + insertedNode = tree.Root } else { node := tree.Root loop := true @@ -77,14 +78,16 @@ func (tree *Tree) Put(key interface{}, value interface{}) { return case compare < 0: if node.Left == nil { - node.Left = insertedNode + node.Left = &Node{Key: key, Value: value, color: red} + insertedNode = node.Left loop = false } else { node = node.Left } case compare > 0: if node.Right == nil { - node.Right = insertedNode + node.Right = &Node{Key: key, Value: value, color: red} + insertedNode = node.Right loop = false } else { node = node.Right