修复一些size 计算的错误
This commit is contained in:
@@ -287,39 +287,41 @@ func (tree *Tree) GetNode(value interface{}) (*Node, bool) {
|
||||
return nil, false
|
||||
}
|
||||
|
||||
func (tree *Tree) Put(value interface{}) {
|
||||
tree.size++
|
||||
node := &Node{value: value}
|
||||
if tree.size == 1 {
|
||||
tree.root = node
|
||||
func (tree *Tree) Put(key interface{}) {
|
||||
|
||||
if tree.size == 0 {
|
||||
tree.root = &Node{value: key}
|
||||
tree.size++
|
||||
return
|
||||
}
|
||||
|
||||
for cur, c := tree.root, 0; ; {
|
||||
c = tree.Compare(value, cur.value)
|
||||
if c == 0 {
|
||||
cur.value = value
|
||||
return
|
||||
} else if c == -1 {
|
||||
c = tree.Compare(key, cur.value)
|
||||
if c == -1 {
|
||||
if cur.children[0] == nil {
|
||||
cur.children[0] = node
|
||||
node.parent = cur
|
||||
tree.size++
|
||||
cur.children[0] = &Node{value: key}
|
||||
cur.children[0].parent = cur
|
||||
if cur.height == 0 {
|
||||
tree.fixPutHeight(cur)
|
||||
}
|
||||
return
|
||||
}
|
||||
cur = cur.children[0]
|
||||
} else {
|
||||
} else if c == 1 {
|
||||
if cur.children[1] == nil {
|
||||
cur.children[1] = node
|
||||
node.parent = cur
|
||||
tree.size++
|
||||
cur.children[1] = &Node{value: key}
|
||||
cur.children[1].parent = cur
|
||||
if cur.height == 0 {
|
||||
tree.fixPutHeight(cur)
|
||||
}
|
||||
return
|
||||
}
|
||||
cur = cur.children[1]
|
||||
} else {
|
||||
cur.value = key
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user