avl insertion
This commit is contained in:
33
tree.go
Normal file
33
tree.go
Normal file
@@ -0,0 +1,33 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user