ฉันกำลังมองหาอัลกอริทึมที่มีประสิทธิภาพที่สุดในการดึงทรี (จัดเก็บเป็นรายการขอบหรือเป็นรายการของการแมปจากโหนดแม่ไปยังรายการโหนดย่อย) และสร้างสำหรับโหนด EVERY รายการของโหนดทั้งหมดที่สืบเชื้อสายมาจากมัน (ระดับใบและระดับที่ไม่ใช่ใบ)
การดำเนินการจะต้องผ่านลูปแทนการผสมเนื่องจากขนาด และควรเป็น O (N)
คำถาม SO นี้ครอบคลุมโซลูชันมาตรฐานที่เห็นได้ชัดเจนพอสมควรสำหรับการค้นหาคำตอบสำหรับหนึ่งโหนดในทรี แต่เห็นได้ชัดว่าการทำซ้ำอัลกอริทึมนั้นในโหนดต้นไม้ทุกโหนดไม่มีประสิทธิภาพสูง (จากส่วนหัวของฉัน O (NlogN) ถึง O (N ^ 2)
รู้จักรากของต้นไม้ ต้นไม้มีรูปร่างตามอำเภอใจอย่างแน่นอน (เช่นไม่ใช่ N-nary ไม่สมดุลในทางใดรูปร่างหรือรูปแบบไม่ลึกสม่ำเสมอ) - บางโหนดมีลูก 1-2 คนบางคนมีลูก 30K
ในระดับปฏิบัติ (แม้ว่าจะไม่ส่งผลกระทบต่ออัลกอริทึม) ต้นไม้มีโหนด ~ 100K-200K