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
1
A
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.
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österilebiliraaaabbabbaabbbababb
, yani.
böyle (psudocode) gibi bazı: ElbetteNode * 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.
İlgili konular
- 1. İkili dizgiyi bayt dizisine dönüştürme
- 2. Görüntü nesnesini ikili bloğa dönüştürme
- 3. Metni java ikili dosyasına dönüştürme
- 4. Karma Haritası İkili Diziye Dönüştürme
- 5. Bir diziyi bir ağaca dönüştürmek
- 6. Sayı dizisini ikili bir sayıya dönüştürme
- 7. Dizeleri altıgen biçimiyle ikili biçim arasında dönüştürme
- 8. 1s ve 0s dizesini ikili değere dönüştürme
- 9. Bir dosyayı bir ağaca ayırın PHP
- 10. Haskell'de bir ağaca geçme ve filtreleme
- 11. Mevcut ağaca dizin eklemek mümkün mü
- 12. İkili Ağaç Yaprakları
- 13. Bir ikili arama ağacının derinliğini hesaplama
- 14. Çifti C++ dizesine dönüştürme
- 15. Karşılıklı ASCII Dize Dönüştürme
- 16. Python'da ondalık basamağa dönüştürme
- 17. MySQL'i Dönüştürme PostgreSQL'e Dönüştürme
- 18. Ben mesela ikili sahip ikili bayt uzunluğu
- 19. Ikili dosya
- 20. Sürüm ikili
- 21. İkili ben ikili haline kömürü dönüştürmek için aşağıdaki kodu kullanabilirsiniz, ben bir char bir ikili sayı dönüştürmek çalışıyorlar c
- 22. SVG filtresi uygulanmış görüntüyü arka plana kaydetmek için ikili veya base64'e dönüştürme
- 23. Java'da ikili ağaçta derinlikli ilk arama (DFS) nasıl uygulanır?
- 24. Python'da Baytları Kayan Nokta Sayılarına Dönüştürme
- 25. iOS kilitlenme eşleşmelerinin eşleştirilmesi ikili dağıtılmış ikili dökümü
- 26. Bir ikili ikili düzenleyiciden ağ bayt sırasını nasıl dönüştürebilirim?
- 27. İkili Veri ile Dosya Olarak İkili Veri İndirme
- 28. Bir NSInteger dönüştürmek anlamaya çalışıyorum bir ikili (string) değeri
- 29. Bir Mat öğesinden IplImage'a dönüştürme dönüştürme *
- 30. Uygulama İkili Ağacı Ruby
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:/ –
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
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? –