Z prostym BST gdzie kolejność wkładania elementów losowych, masz sposób, aby określić, ile dokładnie elementy są mniejsze niż danego elementu bez chodzenia drzewa.
Jeśli miał wyważone drzewo, taki jak drzewo czerwono-czarne, a następnie można umieścić przynajmniej dolną i górną granicę wskaźnika ze względu na granice na wysokości drzewa. Jeśli kolejność wstawiania elementów do BST jest nieprzypadkowe potem znowu, można powiedzieć coś o wysokości drzew bez chodzenia go i dać pewną szacunkową wartość wskaźnika przybliżonej.
Co do dodatkowych struktur danych, można utworzyć dodatkowego słownika, który mapuje elementy do swojego indeksu. Jednak budowa tego indeksu zajmuje O (N), a indeks jest nieaktualny podczas dodawania nowych elementów do BST, więc to tylko działa dobrze dla BSTS z rzadkich aktualizacji.
Innym rozwiązaniem jest rozszerzenie węzły BST dwie właściwości: wskaźnik i liczy. Indeks mówi ilu elementy mniejsze niż w tym węźle są w drzewie. Hrabia mówi, jak wiele elementów były w BST podczas ostatniej aktualizacji indeksu węzła. Ze stosunkowo prostych zmian do wstawiania, usuwania i wyszukiwania na BST, które nie mają wpływu na te podstawowe operacje poza stałym czasie i można dostać indeks elementu bezpośrednio w czasie O (1).
Zasadniczo, jak wstawić nowy węzeł, dla każdego węzła można przejść na swojej drodze w dół, gdy nowy element jest mniejszy (tj następnym krokiem jest po lewej dziecka), przyrost zarówno wskaźnik i liczyć tego węzła. Kiedy znajdziesz się nowy element jest, dajesz mu liczyć na podstawie jego rodziców i indeks na podstawie jego rodziców i lewym dziecka. Pozostawia to elementy większe niż nowy z niewłaściwym indeksie, ale można łatwo aktualizować, że jak szukać elementu, odwołując się do wartości liczby rodzica - różnicę między liczbą rodzica i dziecka mówi, jak wstawki z wielu mniejszych elementów wydarzyło od ostatniej aktualizacji indeksu dziecka, więc po prostu dodać tę różnicę do indeksu.