Sorunuz verilen BST için topolojik orderings sayısını sayma sorusuna eşdeğerdir.
Örneğin, BST'deki
10
/ \
5 20
\7 | \
15 30
topolojik sıralamaların seti böyle elle sayılabilir: 10 başlar her sipariş. 20 ile başlayan alt ağacı için topolojik sıralamaların sayısının iki olması: (20, 15, 30) ve (20, 30, 15). 5 ile başlayan alt ağaç tek sipariş sahiptir: (5, 7). Bu iki sekans böylece aynı BST üretmek yirmi giriş üreten, 2 x 10 interleavings yol açan keyfi bir şekilde sokulmuş olabilir. ilk 10, muhafaza (20, 15, 30) için aşağıda verilmiştir:
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
haznenin (20, 30, 15), aşağıdaki girişlerin herhangi biri aynı BST ürettiği kontrol edebilir --- benzerdir.
Bu örnekler de sıralamaların sayısını hesaplamak için yinelemeli bir kural sağlar. bir çocuklu olmayan bir yaprak düğüm, sayı çocuk için topolojik orderings sayısına eşittir için bir yaprağın için, sayı 1'dir. L | alt ağaç boyutları ile iki çocuklu bir sigara yaprak düğüm için | ve | r |., her ikisi de sahip olan L ve R sıralamalar, solunum sayısı eşittir
l x r x INT(|L|, |R|)
L | | Nerede INT olası interleavings sayısıdır ve | R | elementler. (| L | + | R |) Bu tarafından kolayca hesaplanabilir! / (| L |! X | R |!). Yukarıdaki örnekte, aşağıdaki özyinelemeli hesaplama olsun:
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
Bu sorunu çözer.
Not: Bu çözüm BST tüm düğümler farklı anahtarlara sahip olduğunu varsayar.