Twoje pytanie jest równoznaczne z zliczaniem liczby porządków topologicznych dla danego BST.
Na przykład, dla BST
10
/\
5 20
\7 | \
15 30
zestawu porządków topologicznych można policzyć ręcznie tak: 10 rozpoczyna każdy zamówieniu. Liczba porządków topologicznych dla poddrzewa rozpoczynającego się od 20 to dwa: (20, 15, 30) i (20, 30, 15). Subtree zaczynający się od 5 ma tylko jedną kolejność: (5, 7). Te dwie sekwencje mogą być przeplatane w dowolny sposób, prowadząc do 2 x 10 przeplotów, wytwarzając w ten sposób dwadzieścia danych wejściowych, które wytwarzają ten sam BST. Pierwszy 10 są wymienione poniżej dla przypadku (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
obudowy (20, 30, 15) jest analogiczna --- można sprawdzić, że każdy z następujących wejść produkuje ten sam BST.
W przykładach podano również regułę rekurencyjną do obliczania liczby zamówień. Dla liścia liczba wynosi 1. Dla węzła innego niż liść z jednym dzieckiem liczba jest równa liczbie porządków topologicznych dla dziecka. Dla węzła bez liści z dwójką dzieci o rozmiarach poddrzewa | L | i | r |., oba posiadające uporządkowania L i R, odpowiednio, liczba równa
l x r x INT(|L|, |R|)
gdzie INT jest liczbą możliwych interleavings o | l | i | R | elementy. Można to łatwo obliczyć przy pomocy (| L | + | R |)!/(| L |! X | R |!). W powyższym przykładzie otrzymujemy następujące obliczenia rekurencyjne:
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
Rozwiązuje to problem.
Uwaga: to rozwiązanie zakłada, że wszystkie węzły w BST mają różne klucze.
Dlaczego niedookreśloność jest niezbędna? – anukul
To nie jest tak naprawdę. W 2009 roku dużo myślałem o niedeterminyzmie. Jednak dobrze pasuje do tego problemu - wypróbowanie jednej rzeczy, wyprowadzenie wyniku, a następnie powrót do wcześniejszego stanu (gdzie stan jest (zestaw odwiedzonych węzłów, ścieżka do tej pory)). – Greg