Su pregunta es equivalente a la cuestión de contar el número de ordenamientos topológicos para la BST dada.
Por ejemplo, para BST
10
/ \
5 20
\7 | \
15 30
el conjunto de ordenamientos topológicos se puede contar a mano de la siguiente manera: 10 comienza cada orden. El número de ordenamientos topológicos para el subárbol que comienza con 20 es dos: (20, 15, 30) y (20, 30, 15). El subárbol que comienza con 5 tiene solo un orden: (5, 7). Estas dos secuencias se pueden intercalar de manera arbitraria, lo que lleva a intercalaciones de 2 x 10, produciendo así veinte entradas que producen la misma BST. Los primeros 10 se enumeran a continuación para el caso (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
La caja (20, 30, 15) es análoga: puede verificar que cualquiera de las siguientes entradas produzca la misma BST.
Este ejemplo también proporciona una regla recursiva para calcular el número de ordenamientos. Para una hoja, el número es 1. Para un nodo no hoja con un hijo, el número es igual al número de ordenamientos topológicos para el niño. Para un nodo no hoja con dos hijos con tamaños de subárbol | L | y | R |, ambos con ordenamientos I y R, resp., el número es igual a
l x r x INT(|L|, |R|)
Donde INT es el número de entrelazamientos posibles de | L | y | R | elementos. Esto se puede calcular fácilmente por (| L | + | R |)! / (| L |! X | R |!). Para el ejemplo anterior, obtenemos el siguiente cálculo recursivo:
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
Esto resuelve el problema.
Nota: esta solución asume que todos los nodos en el BST tienen diferentes claves.