Díky jednoduchému BST, kde je pořadí vkládání prvků v náhodný, máte způsob, jak zjistit, kolik prvky jsou přesně menší než daného prvku, aniž by šel strom.
Pokud byste měli vyvážený strom, jako červeno-černý strom, pak byste mohl aspoň dát dolní a horní mez indexu kvůli hranice na výšku stromu. V případě, že objednávka vložení prvků na BST je znovu non-náhodný, mohl byste něco o výšce stromu říci, aniž by jej chůzi a dát nějaký odhad přibližné indexu.
Pokud jde o pomocné datové struktury, byste mohli vytvořit pomocný překladový slovník, který mapuje prvky k jejich index. Nicméně, stavba, která index trvá O (N) a index se stává stale při přidání nové prvky k BST, tak to funguje jen dobře pro BSTs s občasnými aktualizacemi.
Dalším řešením je rozšířit BST uzly se dvěma vlastnostmi: index a počítat. Index udává, jak mnoho prvků menší než ten v tomto uzlu jsou ve stromu. Počet říká, kolik prvky byly v BST, kdy jste naposledy aktualizován index, který uzlu. S relativně jednoduchými změnami vložení, smazání a vyhledávání na BST, které nemají vliv na ty základní operace nad rámec konstantním čase, a může dostat indexu prvku přímo v O (1).
V podstatě, jak si vložit nový uzel pro každý uzel, který přenést na své cestě dolů, v případě, že nový prvek je menší (tj je dalším krokem k levé dítě), zvýšit i index a počet tomto uzlu. Když najdete místo nového prvku je, co si jen dát hlas na základě jeho rodiče, a index založený na její mateřské společnosti a levé dítě. To ponechává prvky větší než nová jedna s nesprávnou indexu, ale můžete snadno aktualizovat, které, jak si hledat prvek s odkazem na spočítané hodnoty mateřské společnosti - rozdíl mezi počtu rodičem a dítětem řekne, jak mnoho inzerce menších prvků se stalo, protože jste naposledy aktualizován index dítěte, takže stačí přidat tento rozdíl na indexu.