Osobiście uważam, że najlepszym sposobem na to byłoby, aby przejść do randomizowanym binarne drzewo poszukiwań jak treap . To absolutnie nie gwarantuje, że drzewo będzie zrównoważony, ale z dużym prawdopodobieństwem drzewa będą mieć dobry współczynnik wagi. Treap działa przez zwiększanie każdy element drzewa z wieloma równomiernie losowej, a następnie zapewnienie, że drzewo to drzewo binarne wyszukiwania w odniesieniu do kluczy i sterty w odniesieniu do jednolitych wartości losowych. Wstawienie do treap jest bardzo proste:
- Wybierz liczbę losową przypisać do nowo dodanego elementu.
- Włożyć element do BST za pomocą standardowego wprowadzenie BST.
- Natomiast klawisz nowo wstawionego elementu jest większa niż tonacji jego rodzica, wykonać obrót drzewa przynieść nowy element powyżej jego rodzica.
Ten ostatni krok jest tylko jeden naprawdę ciężko, ale jeśli trzeba było trochę czasu, aby pracować go na tablicy Jestem całkiem pewien, że można zaimplementować to on-the-fly w wywiadzie.
Innym rozwiązaniem, które może działać byłoby użyć drzewa pochylenie . To inny rodzaj szybkiej BST, które mogą być realizowane przy założeniu, że masz standardowy funkcji wstawiania BST i zdolność do rotacja drzewa. Co ważne, drzewa splay są niezwykle szybko w praktyce, a wiadomo, że są one (z dokładnością do stałego czynnika) co najmniej tak dobry jak każdy inny statycznej binarne drzewo poszukiwań.
W zależności od tego, co się rozumie przez „szukaj drzewa”, można również rozważyć przechowywania liczb całkowitych w pewnej strukturze zoptymalizowanej do odnośnika liczb całkowitych. Na przykład, można użyć Trie bitowe do przechowywania liczb całkowitych, który wspiera wyszukiwanie w czasie proporcjonalnym do liczby bitów w słowie maszynowym. Może to być realizowane za pomocą całkiem ładnie wyglądać funkcji rekurencyjnej ciągu bitów, i nie wymaga jakichkolwiek obrotów. Jeśli potrzebne do wysadzenia na implementację w piętnaście minut, a jeśli wywiad pozwala na odejście od standardowych wyszukiwarek binarnych drzew, to może być doskonałym rozwiązaniem.
Mam nadzieję że to pomoże!