add benchmark, printer
This commit is contained in:
parent
7aece75825
commit
508460da67
@ -1,8 +1,14 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
)
|
||||
|
||||
type TreeNode interface {
|
||||
Left() TreeNode
|
||||
Right() TreeNode
|
||||
Print(io.Writer)
|
||||
}
|
||||
|
||||
type BTreeNode struct {
|
||||
@ -31,6 +37,16 @@ func (sbt *StringyBTreeNode) Right() TreeNode {
|
||||
return sbt.right
|
||||
}
|
||||
|
||||
func (sbt *StringyBTreeNode) Print(w io.Writer) {
|
||||
fmt.Printf("%+v\n", sbt)
|
||||
if sbt.left != nil {
|
||||
sbt.left.Print(w)
|
||||
}
|
||||
if sbt.right != nil {
|
||||
sbt.right.Print(w)
|
||||
}
|
||||
}
|
||||
|
||||
func (sbt *StringyBTreeNode) Insert(k string, v interface{}) *StringyBTreeNode {
|
||||
if sbt.k == k {
|
||||
sbt.v = v // set new value
|
||||
|
@ -22,4 +22,17 @@ func TestBuildingTree(t *testing.T) {
|
||||
if tree.Get("bar") != 5 {
|
||||
t.Fail()
|
||||
}
|
||||
if tree.Get("zot") != nil {
|
||||
t.Fail()
|
||||
}
|
||||
}
|
||||
|
||||
var r TreeNode
|
||||
|
||||
func BenchmarkInserts(b *testing.B) {
|
||||
var result TreeNode
|
||||
for n := 0; n < b.N; n++ {
|
||||
NewStringyBTree("foo", 1).Insert("bar", 2).Insert("baz", 3).Insert("quuz", 4)
|
||||
}
|
||||
r = result
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user