AVL tree with some useful extensions written in Go