find key value error

This commit is contained in:
huangsimin
2020-03-18 16:27:34 +08:00
parent 3931f339d1
commit 8f5c7b5210
19 changed files with 2437 additions and 9 deletions

View 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])
}
}
}

View File

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

View File

@@ -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")
}
}