“Düzleştir” ne demektir?


13

Eğer bir ağacım olsaydı, sezgisel olarak "düzleşir"

soldan sağa doğru ilerleyerek ağaçtaki tüm öğelerin bir listesini alabilir misiniz?

Eğer bağlantılı bir listem varsa, sezgisel olarak "düzleştirmek" anlamına gelir

bundan başlayarak tüm öğelerin bir listesini alın

Örneğin, bağlantılı bir liste, kendi iç istisnasını toplayan bir istisnandan oluşur. "FlattenInnerExceptions" istisnası üzerine bir yöntemi bir dizi istisna, en dıştaki istisna ve en içteki istisna - son olarak döndüreceği beklentisiyle adlandırmak adil olur mu?

Yanıtlar:


25

Listelerin bir listesi olsaydı, "düzleştir", tüm yaprak öğelerinin bir listesini sırayla, yani değişen bir şey döndüren işlem olurdu :

[[a, b, c], [d, e, f], [g, h i]]

içine

[a, b, c, d, e, f, g, h, i]

Ağaçlar için, düzleştirme tüm yaprakların doğal geçiş düzeninde bir listesini oluşturur (Not: sadece yapraklar sonuçta olduğu için, bunu ön, iç veya son sipariş geçişi olarak düşünüp düşünmemeniz önemli değildir.)

Sonuç olarak, basit bir liste için “düzleştirme” işlemi tanım gereği bir kimlik dönüşümüdür.

Düzleştirme aşamalar veya derece olarak yapılabilir. Örneğin:

[[[a, b], [c, d]], [[e, f], [g, h]]]

düzleştirilebilir:

[[a, b, c, d], [e, f, g, h]]

ve sonra:

 [a, b, c, d, e, f, g, h]

@Donal Fellows: Bu, ağaçlar hakkındaki sorunun yarısını ele alıyor. Bağlantılı listeler ne olacak? Onlar hakkında "Flatten" terimi ile konuşmak sezgisel mi?
GregC

@GregC, belki de bağlantılı listenin ne olduğunu düşündüğünüze bir örnek eklemek istersiniz.

Soruyu bir örnekle düzenledi.
GregC

3
@GregC: Bağlantılı bir liste yalnızca sıralı soyut türün bir uygulamasıdır. (Bir dizi de bu soyut türün en az bir düzeyde uygulanmasıdır ve evet önemli farklılıklar vardır; soyut türler hikayenin tamamı değildir.) Çoğu bellek ayırma sistemi, Liste hücre başına bellek ayırma ek yükü (32-bit bir sistemde genellikle yaklaşık 8 bayt) bu yüzden sabit zaman ekler ve silmeye ihtiyacınız yoksa bunları kullanmanızı tavsiye etmem.
Donal Fellows

1
@BarisDemiray Evet. Bu birinci seviye düzleşmenin sonucu, diğeri iki turdan sonra olacak ...
Donal Fellows
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.