Я обычно предпочитаю деревья AVL хеш-таблицам. Я знаю, что ожидаемая O (1) сложность хеш-таблиц превосходит гарантированную O (log n) сложность деревьев AVL, но на практике постоянные факторы делают две структуры данных в целом конкурентоспособными, и нет никаких беспокойств по поводу некоторые неожиданные данные, которые вызывают плохое поведение. Кроме того, я часто нахожу, что когда-то в течение срока службы программы, в ситуации, не предусмотренной, когда первоначальный выбор хеш-таблицы казался правильным, мне нужны данные в отсортированном порядке, поэтому я в итоге переписываю программу, чтобы использовать Дерево AVL вместо хеш-таблицы; проделайте это достаточно раз, и вы узнаете, что можете начать с деревьев AVL.
Если ваши ключи являются строками, попытки троичного поиска предлагают разумную альтернативу деревьям AVL или хеш-таблицам.