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 }