An implementation of AVL tree