Qual è il più efficiente?
Vago e difficile rispondere. Le complessità computazionali sono tutte ben definite. Se questo è ciò che intendi per efficienza, non c'è un vero dibattito. In effetti, tutti i buoni algoritmi vengono forniti con prove e fattori di complessità.
Se intendi "tempo di esecuzione" o "utilizzo della memoria", dovrai confrontare le implementazioni effettive. Quindi lingua, tempo di esecuzione, sistema operativo e altri fattori entrano in gioco, rendendo difficile rispondere alla domanda.
Qual è la più facile da implementare?
Vago e difficile rispondere. Alcuni algoritmi possono sembrare complessi per te, ma per me banali.
Qual è il più usato?
Vago e difficile rispondere. Prima c'è il "da chi?" parte di questo? Solo Haskell? Che dire di C o C ++? In secondo luogo, c'è il problema del software proprietario in cui non abbiamo accesso alla fonte per fare un sondaggio.
Ma soprattutto, quale mi consigliate?
Presumo che questo appartenga qui perché è aperto al dibattito.
Corretta. Poiché i tuoi altri criteri non sono molto utili, questo è tutto ciò che otterrai.
È possibile ottenere la fonte per un gran numero di algoritmi ad albero. Se vuoi imparare qualcosa, potresti semplicemente implementare tutti quelli che riesci a trovare. Invece di chiedere una "raccomandazione", basta raccogliere tutti gli algoritmi che riesci a trovare.
Ecco la lista:
http://en.wikipedia.org/wiki/Self-balancing_binary_search_tree
Ne sono definiti sei popolari. Inizia con quelli.