Η ερώτησή σας είναι ισοδύναμο με το ερώτημα της μετρώντας τον αριθμό των τοπογραφικών orderings για το συγκεκριμένο BST.
Για παράδειγμα, για την BST
10
/ \
5 20
\7 | \
15 30
το σύνολο των τοπογραφικών orderings μπορεί να μετρηθεί με το χέρι σαν αυτό: 10 ξεκινά κάθε παραγγελία. Ο αριθμός των τοπολογικών orderings για την υποδένδρο ξεκινώντας με 20 είναι δύο: (20, 15, 30) και (20, 30, 15). Το υποδένδρο ξεκινώντας με 5 έχει μόνο ένα παραγγελίας: (5, 7). Αυτά τα δύο αλληλουχία μπορεί να παρεμβληθούν σε ένα αυθαίρετο τρόπο, οδηγώντας σε 2 χ 10 interleavings, παράγοντας έτσι είκοσι εισόδους οι οποίες παράγουν το ίδιο BST. Το πρώτο 10 απαριθμούνται παρακάτω για την περίπτωση (20, 15, 30):
10 5 7 20 15 30
10 5 20 7 15 30
10 5 20 15 7 30
10 5 20 15 30 7
10 20 5 7 15 30
10 20 5 15 7 30
10 20 5 15 30 7
10 20 15 5 7 30
10 20 15 5 30 7
10 20 15 30 5 7
Η υπόθεση (20, 30, 15) είναι ανάλογη --- μπορείτε να ελέγξετε ότι κάθε μία από τις ακόλουθες εισόδους παράγει το ίδιο BST.
Το παράδειγμα αυτό παρέχει επίσης ένα αναδρομικό κανόνα για τον υπολογισμό του αριθμού των orderings. Για ένα φύλλο, ο αριθμός είναι 1. Για ένα κόμβο χωρίς φύλλο με ένα παιδί, ο αριθμός ισούται με τον αριθμό των τοπογραφικών orderings για το παιδί. Για έναν κόμβο μη φύλλου με δύο παιδιά με μεγέθη υποδένδρο | L | και | R |., αμφότερα έχοντας L και R orderings, αντίστοιχα, ο αριθμός ισούται με
l x r x INT(|L|, |R|)
Σε περίπτωση που INT είναι ο αριθμός των πιθανών interleavings της | L | και | R | στοιχεία. Αυτό μπορεί εύκολα να υπολογιστεί από (| L | + | R |)! / (| L |! X | R |!). Για το παραπάνω παράδειγμα, παίρνουμε την ακόλουθη επαναληπτικού υπολογισμού:
Ord(15) = 1
Ord(30) = 1
Ord(20) = 1 x 1 x INT(1, 1) = 2 ; INT(1, 1) = 2! / 1 = 2
Ord(7) = 1
Ord(5) = 1
Ord(10) = 1 x 2 x INT(2, 3) = 2 x 5! / (2! x 3!) = 2 x 120 / 12 = 2 x 10 = 20
Αυτό λύνει το πρόβλημα.
Σημείωση: αυτή η λύση προϋποθέτει ότι όλοι οι κόμβοι στο BST έχουν διαφορετικά κλειδιά.