avl/tree.go

34 lines
508 B
Go

package avl
type Tree struct {
root *Node
num int
}
func (t *Tree) Insert(key Comparable) {
t.root = Insert(t.root, key)
t.num++
}
func (t *Tree) Slice() []Comparable {
retval := make([]Comparable, t.num)
t.slice(retval, 0, t.root)
return retval
}
func (t *Tree) slice(s []Comparable, index int, node *Node) int {
if node.left != nil {
index = t.slice(s, index, node.left)
}
s[index] = node.key
index++
if node.right != nil {
index = t.slice(s, index, node.right)
}
return index
}