2016-04-06 19 views
1

Belirli bir dfs geçişinden ikili bir ağaç oluşturabilir miyim? Yani, inorder, preorder, postorder veya üçünün hepsinin olduğunu, bu travers whit'inden başka bir ağaçla hiçbir belirsizliğe sahip olmayan benzersiz bir ikili ağacım olabilir mi?DFS'yi İkili Ağaca Dönüştürme

cevap

0

Tüm harici düğümler de dahil olmak üzere tüm düğümlerinin önyükleme yapması durumunda herhangi bir ikili ağacı geri yükleyebilirsiniz. Bunu yapmak için, iç düğümleri dışsal olanlardan ayırmalısınız. Dış düğümler, birçok uygulamada NULL işaretçisine eşdeğer boş ağaçlardır.

enter image description here

iç düğümleri a ile etiketlenmiş olan aşağıdaki ikili ağaç ve b ile dış için Örneğin

.

Yani ön sipariş geçişi Ön sipariş sırasını tersine olabilir ve özgün ağaç geri yüklemek için tüm olası ön sipariş kodlarının dil injektif olduğu gösterilebilir

aaaabbabbaabbbababb 

, yani.

böyle (psudocode) gibi bazı: Elbette

Node * preorder_to_tree(char *& ptr) 
{ 
    if (*ptr++ == ''b') 
    return nullptr; 

    Node * p = new Node; 
    LLINK(p) = preorder_to_tree(ptr); 
    RLINK(p) = preorder_to_tree(ptr); 

    return p; 
} 

, algoritma geçerli bir ön sipariş dizisini varsayar.

Anahtarları iç düğümlerde saklarsanız, boş ağacı belirtmek için özel bir anahtar kullanabilirsiniz ve algoritma aynı olacaktır.

+0

Her düğümün kaç çocuğa sahip olduğunu bilmiyorsak? Demek istediğim, (a, b, c, d, e) önkoşulunun (b, a, d, c, e), (c, b, a, d, e) vb. İstenilen ağaç hangisi olduğunu nasıl bilebiliriz? Önceden bir öneriyi ağacın yaratması için yeterli olduğunu sanmıyorum:/ –

+0

Belirttiğiniz gibi. İkili ağaçlarla uğraşıyoruz. Bu nedenle, her iç düğümün her zaman iki olası altkümesi vardır ve üç olası kombinasyon vardır: her iki alt ağacı boş alt ağaçtan oluşan tam düğüm, boş alt ağaçlı tamamlanmamış düğümü ve her iki alt boşta boş bir yaprak düğümü. Şimdi bir m-ağacıyla uğraşırsanız, o zaman, ön sipariş geçişi m-ağacındaki ön sipariş geçişine eşit olan eşdeğer bir ikili ağaç elde edersiniz. Ben bu denklik – lrleon

+0

daha iyi bir anlama elde etmek için Knuth TAOCP V I gözden geçirmenizi öneririz. İkili ağaç boş olabilir (?). Bu arada, tam düğüm ve eksik düğüm anlamına geliyor? –

İlgili konular