Java implementation of a generic AVL Tree data structure