fix: wrong variable usage
This commit is contained in:
parent
caaf53b30d
commit
adeb279d87
@ -22,7 +22,7 @@ func (t *Tree) rightRotate(node *Node) {
|
|||||||
left = node.left
|
left = node.left
|
||||||
)
|
)
|
||||||
|
|
||||||
node.left = node.right
|
node.left = left.right
|
||||||
if node.left != nil {
|
if node.left != nil {
|
||||||
node.left.parent = node
|
node.left.parent = node
|
||||||
}
|
}
|
||||||
@ -88,7 +88,7 @@ func (t *Tree) fixup(root, pt *Node) {
|
|||||||
unclePt *Node
|
unclePt *Node
|
||||||
)
|
)
|
||||||
|
|
||||||
for pt != t.root && pt.color != 0 && pt.parent.color == 1 {
|
for pt != root && pt.color != 0 && pt.parent.color == 1 {
|
||||||
parentPt = pt.parent
|
parentPt = pt.parent
|
||||||
grandParentPt = pt.parent.parent
|
grandParentPt = pt.parent.parent
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,10 @@
|
|||||||
package redblack
|
package redblack
|
||||||
|
|
||||||
import "testing"
|
import (
|
||||||
|
"math/rand"
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
type testKey int
|
type testKey int
|
||||||
|
|
||||||
@ -12,22 +16,44 @@ func (k testKey) Compare(c Comparable) int {
|
|||||||
panic("unexpected type")
|
panic("unexpected type")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestMulti(t *testing.T) {
|
||||||
|
for i := 0; i < 20; i++ {
|
||||||
|
TestInsert(t)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestInsert(t *testing.T) {
|
func TestInsert(t *testing.T) {
|
||||||
var (
|
var (
|
||||||
tree *Tree
|
tree *Tree
|
||||||
out []Comparable
|
out []Comparable
|
||||||
keys = []testKey{7, 6, 5, 4, 3, 2, 1}
|
keys []testKey
|
||||||
|
input []testKey
|
||||||
)
|
)
|
||||||
|
|
||||||
|
keys = make([]testKey, 1000000)
|
||||||
|
for i := range keys {
|
||||||
|
keys[i] = testKey(i + 1)
|
||||||
|
}
|
||||||
|
//t.Log("base:", keys)
|
||||||
|
input = make([]testKey, len(keys))
|
||||||
|
copy(input, keys)
|
||||||
|
|
||||||
|
r := rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||||
|
r.Shuffle(len(input), func(i, j int) {
|
||||||
|
input[i], input[j] = input[j], input[i]
|
||||||
|
})
|
||||||
|
//t.Log("shuffled:", input)
|
||||||
|
|
||||||
tree = new(Tree)
|
tree = new(Tree)
|
||||||
for _, k := range keys {
|
for _, k := range input {
|
||||||
tree.Insert(k)
|
tree.Insert(k)
|
||||||
}
|
}
|
||||||
|
|
||||||
out = tree.Slice()
|
out = tree.Slice()
|
||||||
|
//t.Log("output:", out)
|
||||||
for i, d := range out {
|
for i, d := range out {
|
||||||
if ck, ok := d.(testKey); ok {
|
if ck, ok := d.(testKey); ok {
|
||||||
if ck != keys[len(keys)-1-i] {
|
if ck != keys[i] {
|
||||||
t.Fatal("mismatch data")
|
t.Fatal("mismatch data")
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user