Вам нужно дерево для произвольных типов ключей, для которых определено только сравнение, или будет нормально, если оно будет работать только с типами, которые имеют двоичное представление фиксированного размера (int, long, float, double, ... )? Если последнее имеет место, то двоичное основополагающее дерево - это структура данных, которая имеет очень эффективное слияние (O (1), если вам повезет, O (N) в худшем случае).
См. Быстрое слияние целочисленных карт Криса Окасаки и Эндрю Гилла для деталей структуры данных.
Библиотека коллекций Scala содержит реализацию для ints и longs . Все другие типы примитивов java могут быть переведены в int или long, например используя java.lang.Double.doubleToLongBits для Double.