This class implements AVL trees.
The purpose of this class is to sort elements while allowing duplicate elements (i.e. such that {@code a.equals(b)} istrue). The {@code SortedSet} interface does not allow this, soa specific class is needed. Null elements are not allowed.
Since the {@code equals} method is not sufficient todifferentiate elements, the {@link #delete delete} method isimplemented using the equality operator.
In order to clearly mark the methods provided here do not have the same semantics as the ones specified in the {@code SortedSet} interface, different names are used( {@code add} has been replaced by {@link #insert insert} and{@code remove} has been replaced by {@link #delete delete}).
This class is based on the C implementation Georg Kraml has put in the public domain. Unfortunately, his page seems not to exist any more.
@param < T> the type of the elements
@since 3.0