Uw vraag is gelijk aan de kwestie van tellen van het aantal topologische ordeningen voor de gegeven BST.
Bijvoorbeeld, de BST
10
/ \
5 20
\7 | \
15 30
de set van topologische ordeningen kan worden met de hand geteld als volgt uit: 10 begint elke bestelling. Het aantal topologische ordeningen voor de deelboom ab 20 twee: (20, 15, 30) en (20, 30, 15). De substructuur te beginnen met 5 heeft slechts één bestelling: (5, 7). Beide sequentie kan worden verweven op een willekeurige manier, wat leidt tot 2 x 10 schutbladen, waardoor aldus twintig ingangen die dezelfde BST produceren. De eerste 10 zijn hieronder opgesomd voor de behuizing (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
De behuizing (20, 30, 15) is analoog --- u controleren of elk van de volgende ingangen heeft dezelfde BST.
Dit voorbeeld verschaft ook een recursieve regel om het aantal ordeningen berekenen. Voor een blad, het nummer is 1. Voor een niet-leaf node met een kind, is het aantal gelijk aan het aantal topologische ordeningen voor het kind. Voor een niet-leaf node met twee kinderen met subtree maten | L | en | R |., beide met l en r ordeningen, respectievelijk, het getal gelijk aan
l x r x INT(|L|, |R|)
Waar INT is het aantal mogelijke schutbladen van | L | en | R | elementen. Dit kan gemakkelijk worden berekend door (| L | + | R |)! / (| L |! X | R |!). In het bovenstaande voorbeeld, krijgen we de volgende recursieve berekening:
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
Dit lost het probleem op.
Let op: deze oplossing gaat ervan uit dat alle knooppunten in het BST hebben verschillende sleutels.