find key value error
This commit is contained in:
35
tree/vbtkey/iterator_test.go
Normal file
35
tree/vbtkey/iterator_test.go
Normal file
@@ -0,0 +1,35 @@
|
||||
package vbtkey
|
||||
|
||||
import (
|
||||
"sort"
|
||||
"testing"
|
||||
|
||||
"github.com/474420502/focus/compare"
|
||||
)
|
||||
|
||||
func TestIerator(t *testing.T) {
|
||||
tree := New(compare.Int)
|
||||
l := []int{5, 10, 100, 30, 40, 70, 45, 35, 23}
|
||||
for _, v := range l {
|
||||
tree.Put(v, v)
|
||||
}
|
||||
|
||||
sort.Ints(l)
|
||||
|
||||
iter := tree.Iterator()
|
||||
iter.ToHead()
|
||||
for i := 0; iter.Next(); i++ {
|
||||
|
||||
if iter.Value() != l[i] {
|
||||
t.Error(iter.Value(), l[i])
|
||||
}
|
||||
}
|
||||
iter.ToTail()
|
||||
iter.Prev()
|
||||
for i := len(l) - 1; iter.Next(); i-- {
|
||||
|
||||
if iter.Value() != l[i] {
|
||||
t.Error(iter.Value(), l[i])
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -27,6 +27,7 @@ func (n *Node) String() string {
|
||||
return spew.Sprint(n.value) + "(" + p + "|" + spew.Sprint(n.size) + ")"
|
||||
}
|
||||
|
||||
// Tree increasing
|
||||
type Tree struct {
|
||||
root *Node
|
||||
Compare compare.Compare
|
||||
@@ -43,7 +44,7 @@ func New(Compare compare.Compare) *Tree {
|
||||
}
|
||||
|
||||
func (tree *Tree) String() string {
|
||||
str := "AVLTree\n"
|
||||
str := "VBTree-Key\n"
|
||||
if tree.root == nil {
|
||||
return str + "nil"
|
||||
}
|
||||
@@ -347,7 +348,7 @@ func (tree *Tree) getArountNode(key interface{}) (result [3]*Node) {
|
||||
|
||||
for n := tree.root; n != nil; {
|
||||
last = n
|
||||
c := tree.Compare(key, n.value)
|
||||
c := tree.Compare(key, n.key)
|
||||
switch c {
|
||||
case -1:
|
||||
n = n.children[0]
|
||||
|
||||
@@ -66,7 +66,7 @@ func TestLargePushRemove(t *testing.T) {
|
||||
}
|
||||
|
||||
tree.Clear()
|
||||
if tree.String() != "AVLTree\nnil" {
|
||||
if tree.String() != "VBTree-Key\nnil" {
|
||||
t.Error("tree String is error")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user