Merge pull request #56 from spewspews/fastredblack

speed up redblack put performance
pull/61/head
Emir Pasic 7 years ago committed by GitHub
commit aae97c7363

@ -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

Loading…
Cancel
Save