Какой самый эффективный?
Расплывчато и сложно ответить. Вычислительные сложности все четко определены. Если это то, что вы подразумеваете под эффективностью, то никаких реальных дебатов нет. Действительно, все хорошие алгоритмы идут с доказательствами и факторами сложности.
Если вы имеете в виду «время выполнения» или «использование памяти», то вам нужно сравнить фактические реализации. Затем вступают в игру язык, время выполнения, ОС и другие факторы, что затрудняет ответ на вопрос.
Что проще всего реализовать?
Расплывчато и сложно ответить. Некоторые алгоритмы могут показаться сложными для вас, но тривиальными для меня.
Что чаще всего используется?
Расплывчато и сложно ответить. Сначала есть "кем?" часть этого? Только на Хаскеле? А как насчет C или C ++? Во-вторых, существует проблема проприетарного программного обеспечения, когда у нас нет доступа к источнику для проведения опроса.
Но главное, что вы рекомендуете?
Я предполагаю, что это принадлежит здесь, потому что это открыто для обсуждения.
Верный. Поскольку другие ваши критерии не очень полезны, это все, что вы собираетесь получить.
Вы можете получить исходники для большого количества древовидных алгоритмов. Если вы хотите чему-то научиться, вы можете просто реализовать все, что можете найти. Вместо того, чтобы просить «рекомендации», просто соберите все алгоритмы, которые вы можете найти.
Вот список:
http://en.wikipedia.org/wiki/Self-balancing_binary_search_tree
Есть шесть популярных из них определены. Начните с тех.