34 lines
508 B
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
|
|
}
|