İlk olarak, tüm öğelerin farklı olduğunu varsayacağım. Hiçbir ardışık düzenlenme miktarı size elemanları olan bir ağacın şeklini söyleyemez [3,3,3,3,3]
. Tabii ki bazı ağaçları yinelenen unsurlarla yeniden inşa etmek mümkündür; Hangi güzel koşulların mevcut olduğunu bilmiyorum.
Negatif sonuçlara devam edersek, bir ikili ağacı yalnızca siparişten sonraki ve siparişten sonraki sıralamalardan tamamen yeniden oluşturamazsınız. [1,2]
Ön sipariş ver, [2,1]
siparişin 1
kökünde olması gerekir , fakat 2
sol veya sağ çocuk olabilir. Bu belirsizliği umursamıyorsanız, ağacı aşağıdaki algoritma ile yeniden yapılandırabilirsiniz:
- Let ön sipariş geçişi ve olmak [ y , n , ... , y 1 ] sonrası geçişine olabilir. X 1 = y 1 olmalı ve bu ağacın köküdür.[ x1, … , Xn][ yn, … , Y1]x1= y1
- kökün en soldaki çocuğu ve y 2 en soldakiçocuktur. Eğer x 2 = y 2 ise, kök düğüm tekdüzedir; üzerinde Recurse [ x 2 , ... , x , n ] ve [ y , n , ... , y 2 ] , tek bir alt ağaç oluşturmak için.x2y2x2= y2[ x2, … , Xn][ yn, … , Y2]
- Aksi takdirde, ve j , x 2 = y i ve y 2 = x j olacak şekilde göstergeler olsun . [ x 2 , … , x j - 1 ] , sol alt ağacın ön sıra geçişi, [ x j , … , x n ] sağ alt ağacın sıra geçişidir ve benzer şekilde, sipariş sonrası geçişler için. Sol alt ağacın j - 2 = n - i +benjx2= ybeny2= xj[ x2, … , Xj - 1][ xj, … , Xn] eleman ve sağ alt ağaç i - 2 = n - j + 1 elemanlara sahiptir. Her alt ağaç için bir kez tekrar edin.
Bu arada, bu yöntem rasgele dallanma ile ağaçlara genelleştirir. Rasgele dallanma ile sol alt ağacın boyutunu bulun ve j - 2 öğelerini her iki listeden kesin, ardından ikinci alt ağacın soldan kesilmesi için tekrarlayın.j - 2 = n - ı + 1i - 2 = n - j + 1
j - 2
Belirtildiği gibi, çalışma süresi olan ile İçeride ISTV melerin RWMAIWi'nin ( n 2 ) En kötü durumda (iki çocuklu durumunda, biz doğrusal biçimde her listesinde arama). Sen çevirebilirsiniz O ( nO ( n2)Θ ( n2) Bir n oluşturmak için listeleri hazırlarsanızO ( nl g (n)) giriş listelerinde pozisyonlarına eleman değerlerinden sonlu harita yapısı. Ayrıca, dizinlerden değerlere geçmek için bir dizi veya sonlu harita kullanın; Global endekslere sadık kalın, böylece özyinelemeli çağrılar tüm haritaları alacak ve ne yapılması gerektiğini bilmek için bir argüman olarak yer alacaktır.nl g (n)
[ x1, … , Xn][ z1, … , Zn]
- x1
- kzk= x1[ z1, … , Zk - 1][ zk + 1, … , Zn][ x2, … , Xk][ xk + 1,… , Xn]
O ( n2)O ( nl g (n))
Sipariş sonrası artı sipariş elbette simetriktir.