Met een eenvoudige BST waarbij de volgorde van het inbrengen van elementen in willekeurige, moet je manier om te bepalen hoeveel elementen precies zijn kleiner dan een bepaald element zonder de boom te lopen.
Als u een evenwichtige boom, zoals een rood-zwarte boom had, dan kun je in ieder geval wel een onder- en bovengrens op de index als gevolg van de grenzen van de hoogte van de boom. Als de bestelling van het inbrengen van elementen om een BST niet willekeurig is dan weer, zou je iets over de hoogte boom zeggen zonder het wandelen en geven een schatting van de geschatte index.
Zoals voor extra datastructuren, kon je een hulpwoordenboek die elementen om hun index kaarten te maken. Echter, de bouw van die index neemt O (N) en de index wordt muf wanneer u nieuwe elementen toe te voegen aan de BST, dus dit werkt alleen goed voor BSTS met frequente updates.
Een andere oplossing is om de BST nodes te breiden met twee eigenschappen: index en tellen. De index zegt hoeveel elementen kleiner dan die in dit knooppunt in de boom. De graaf zegt hoeveel elementen waren in de BST wanneer u de laatste index van dat knooppunt bijgewerkt. Relatief eenvoudige veranderingen in insertie, deletie en zoeken op het BST, die geen invloed op de basisbewerkingen voorbij een constante tijd en indexeren van het element direct krijgen O (1).
In wezen, als je een nieuw knooppunt te voegen, voor elk knooppunt dat u passeert op je pad naar beneden, indien het nieuwe element is kleiner (dwz uw volgende stap is om de linker kind), verhogen zowel index en de telling van dat knooppunt. Wanneer u plaats het nieuwe element te vinden, geef je het een telling op basis van zijn ouder, en een index op basis van zijn ouder en linker kind. Dit laat de elementen groter is dan de nieuwe met een verkeerde index, maar je kon eenvoudig updaten dat als je zoekt naar een element door te verwijzen naar de telwaarde van de ouder - het verschil tussen de telling van de ouder en het kind vertelt je hoe veel toevoegingen van kleinere elementen gebeurd sinds de laatste index van het kind bijgewerkt, dus je gewoon dat verschil aan de index toe te voegen.