Który jest najbardziej wydajny?
Niejasne i trudne do odpowiedzi. Złożoności obliczeniowe są dobrze zdefiniowane. Jeśli to rozumiesz przez efektywność, nie ma prawdziwej debaty. Rzeczywiście, wszystkie dobre algorytmy pochodzą z dowodów i czynników złożoności.
Jeśli masz na myśli „czas działania” lub „wykorzystanie pamięci”, musisz porównać rzeczywiste implementacje. Następnie w grę wchodzą język, czas działania, system operacyjny i inne czynniki, które utrudniają odpowiedź na pytanie.
Który jest najłatwiejszy do wdrożenia?
Niejasne i trudne do odpowiedzi. Niektóre algorytmy mogą wydawać się skomplikowane, ale dla mnie banalne.
Który jest najczęściej używany?
Niejasne i trudne do odpowiedzi. Najpierw jest „przez kogo?” część tego? Tylko Haskell? Co z C lub C ++? Po drugie, istnieje zastrzeżony problem z oprogramowaniem, w którym nie mamy dostępu do źródła w celu przeprowadzenia ankiety.
Ale co najważniejsze, co polecacie?
Zakładam, że należy to tutaj, ponieważ jest otwarte na debatę.
Poprawny. Ponieważ twoje pozostałe kryteria nie są zbyt pomocne, to wszystko, co dostaniesz.
Możesz uzyskać źródło dużej liczby algorytmów drzewa. Jeśli chcesz się czegoś nauczyć, możesz po prostu zaimplementować każdy, kogo znajdziesz. Zamiast prosić o „rekomendację”, po prostu zbierz każdy algorytm, jaki możesz znaleźć.
Oto lista:
http://en.wikipedia.org/wiki/Self-balancing_binary_search_tree
Zdefiniowano sześć popularnych. Zacznij od nich.