Con un semplice BST in cui l'ordine di inserimento di elementi in caso, devi modo di determinare quanti elementi sono esattamente più piccola di un dato elemento senza camminare l'albero.
Se tu avessi un albero bilanciato, come ad esempio un albero rosso-nero, allora si potrebbe almeno mettere un limite inferiore e superiore sull'indice a causa dei limiti sulla altezza dell'albero. Se l'ordine di inserimento di elementi ad un BST è non casuale poi di nuovo, si potrebbe dire qualcosa circa l'altezza degli alberi senza camminare e dare un po 'di stima dell'indice approssimativa.
Per quanto riguarda le strutture di dati ausiliari, è possibile creare un dizionario ausiliario che mappa gli elementi al loro indice. Tuttavia, la costruzione di tale indice prende O (N) e l'indice diventa stantio quando si aggiungono nuovi elementi al BST, quindi questo funziona bene solo per i BST con aggiornamenti frequenti.
Un'altra soluzione è quella di estendere i nodi BST con due proprietà: indice e contare. L'indice dice quanti elementi più piccoli di quello in questo nodo sono nell'albero. Il conteggio dice quanti elementi erano in BST con l'ultimo aggiornamento dell'indice di quel nodo. Con relativamente semplici modifiche a inserimento, cancellazione e cercare sul BST, che non influenzano le operazioni di base oltre una costante di tempo, e può ottenere l'indice dell'elemento direttamente a O (1).
In sostanza, quando si inserisce un nuovo nodo, per ogni nodo si passa sul vostro cammino verso il basso, se il nuovo elemento è più piccolo (cioè il prossimo passo è per il bambino a sinistra), incrementare sia indice e il conto di quel nodo. Quando si trova posto del nuovo elemento, si dà un conteggio in base alla sua capogruppo, e un indice in base al suo genitore e figlio sinistro. Questo lascia gli elementi di più grande di quello nuovo con un indice sbagliato, ma si potrebbe aggiornare facilmente che quando si cerca un elemento facendo riferimento al valore di conteggio del genitore - la differenza tra il conteggio del genitore e il bambino vi spiega come molti inserimenti di elementi più piccoli accaduto da dell'ultimo aggiornamento dell'indice del bambino, in modo da è sufficiente aggiungere che differenza per l'indice.