Με ένα απλό BST όπου η σειρά εισαγωγής των στοιχείων σε τυχαία, έχετε τον τρόπο να καθορίσουν τον τρόπο πολλά στοιχεία ακριβώς είναι μικρότερη από ένα δεδομένο στοιχείο χωρίς τα πόδια από το δέντρο.
Αν είχατε ένα ισορροπημένο δέντρο, όπως ένα κόκκινο-μαύρο δέντρο, τότε θα μπορούσε τουλάχιστον να τεθεί ένα άνω και κάτω όριο για το δείκτη οφείλεται στις όρια για το ύψος του δέντρου. Εάν η σειρά εισαγωγής των στοιχείων σε ένα BST δεν είναι τυχαίο στη συνέχεια και πάλι, θα μπορούσατε να πείτε κάτι σχετικά με το ύψος των δένδρων, χωρίς τα πόδια του και να δώσει κάποια εκτίμηση της κατά προσέγγιση δείκτη.
Όσο για βοηθητικές δομές δεδομένων, μπορείτε να δημιουργήσετε ένα βοηθητικό λεξικό που χαρτογραφεί τα στοιχεία για τον δείκτη. Ωστόσο, με βάση αυτό το δείκτη παίρνει O (N) και ο δείκτης γίνεται μπαγιάτικο όταν προσθέτετε νέα στοιχεία στην BST, οπότε αυτό λειτουργεί μόνο καλά για BSTs με σπάνιες εκδόσεις.
Μια άλλη λύση είναι να επεκταθούν οι κόμβοι BST με δύο ιδιότητες: δείκτη και μετράνε. Ο δείκτης λέει πόσα στοιχεία μικρότερο από το ένα σε αυτό το κόμβο στο δέντρο. Ο αριθμός λέει πόσα στοιχεία ήταν στη BST κατά την τελευταία ενημέρωση του δείκτη αυτού κόμβου. Με σχετικά απλές αλλαγές στην εισαγωγή, διαγραφή και αναζήτηση στο BST, που δεν επηρεάζουν αυτές τις βασικές λειτουργίες πέρα από ένα σταθερό χρόνο, και μπορεί να πάρει ο δείκτης του στοιχείου άμεσα σε O (1).
Ουσιαστικά, όπως μπορείτε να εισάγετε ένα νέο κόμβο, για κάθε κόμβο περνάτε στην πορεία σας προς τα κάτω, αν το νέο στοιχείο είναι μικρότερο (δηλαδή το επόμενο βήμα σας είναι να τα αριστερά παιδί), αυξάνει τόσο ο δείκτης και ο αριθμός αυτού του κόμβου. Όταν βρει τη θέση του νέου στοιχείου, να σας δώσει μια μέτρηση με βάση την μητρική της, και έναν δείκτη με βάση την μητρική της και το αριστερό παιδί. Αυτό αφήνει τα στοιχεία μεγαλύτερο από το νέο με ένα λάθος δείκτη, αλλά θα μπορούσε εύκολα να ενημερώσετε ότι όπως κάνετε αναζήτηση για ένα στοιχείο με αναφορά στην τιμή μέτρησης της μητρικής - τη διαφορά μεταξύ του αριθμού των του γονέα και του παιδιού σας λέει πώς πολλές προσθήκες μικρότερων στοιχείων έγινε από την τελευταία ενημέρωση του δείκτη του παιδιού, οπότε μπορείτε απλά να προσθέσετε αυτή τη διαφορά στο δείκτη.