“ แบน” หมายถึงอะไร


13

ถ้าฉันมีต้นไม้ฉันจะ "แบน" โดยนัย

รับรายการทั้งหมดในต้นไม้จากซ้ายไปขวา

หากฉันมีรายการที่เชื่อมโยงจะ "แบน" โดยนัย

รับรายการทั้งหมดเริ่มต้นด้วยรายการนี้

ตัวอย่างเช่นรายการที่เชื่อมโยงจะประกอบด้วยข้อยกเว้นที่รวมข้อยกเว้นภายใน มันจะยุติธรรมที่จะตั้งชื่อวิธีการในข้อยกเว้น "flattenInnerExceptions" ด้วยความคาดหวังว่ามันจะกลับลำดับของข้อยกเว้นข้อยกเว้นนอกสุดก่อนและข้อยกเว้นภายในสุด - ครั้งสุดท้าย?

คำตอบ:


25

ถ้าฉันมีรายการของรายการ“ เรียบ” จะเป็นการดำเนินการที่ส่งคืนรายการขององค์ประกอบใบไม้ทั้งหมดตามลำดับคือสิ่งที่เปลี่ยนแปลง:

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

เข้าไป

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

สำหรับต้นไม้การจัดเรียงแบบแบนกำลังสร้างรายการของใบทั้งหมดตามลำดับการส่งผ่านธรรมชาติ (NB: เนื่องจากมีเพียงใบเท่านั้นที่อยู่ในผลลัพธ์

ด้วยเหตุนี้สำหรับรายการอย่างง่ายการดำเนินงาน "แบน" คือการนิยามการเปลี่ยนแปลงข้อมูลเฉพาะตัว

การแบนสามารถทำได้ในขั้นตอนหรือองศา ตัวอย่างเช่น

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

สามารถถูกแบนไปที่:

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

แล้วไปที่:

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

@ Donal Fellows: นี่ตอบคำถามครึ่งหนึ่งเกี่ยวกับต้นไม้ สิ่งที่เกี่ยวกับรายการที่เชื่อมโยง มันง่ายที่จะพูดคุยเกี่ยวกับพวกเขาด้วยคำว่า "แบนหรือไม่?"
GregC

@GregC บางทีคุณอาจต้องการเพิ่มตัวอย่างของสิ่งที่คุณคิดว่าเป็นรายการที่เชื่อมโยง

แก้ไขคำถามด้วยตัวอย่าง
GregC

3
@GregC: รายการที่เชื่อมโยงเป็นเพียงการดำเนินการตามลำดับนามธรรมชนิด (อาเรย์เป็นการใช้งานของประเภทนามธรรมนั้นอย่างน้อยหนึ่งระดับและใช่มีความแตกต่างอย่างมีนัยสำคัญประเภทนามธรรมไม่ใช่เรื่องราวทั้งหมด) ระบบการจัดสรรหน่วยความจำส่วนใหญ่ทำรายการที่เชื่อมโยงค่อนข้างแพงเนื่องจากคุณ ' กำลังจ่ายค่าใช้จ่ายในการจัดสรรหน่วยความจำต่อเซลล์รายการ (ค่าใช้จ่ายที่มักจะประมาณ 8 ไบต์ในระบบ 32 บิต) ดังนั้นฉันจะไม่แนะนำให้ใช้พวกเขาจนกว่าคุณจะมีความต้องการแทรกและลบเวลาคงที่
Donal Fellows

1
@BarisDemiray ใช่ นั่นจะเป็นผลมาจากการแบนระดับแรกและอีกอันจะเกิดขึ้นหลังจากผ่านไปสองรอบ…
Donal Fellows
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.