الدرس 5 من 8
تسطيح القوائم المتداخلة
- 13 دقيقة
- 6 فحوص
- 3 تلميحات
- إلى المطلوب
هدف الدرس
تحويل شجرة إلى قائمة
الشرح
ستقابل القوائم المتداخلة في كل مكان، مثل التعليقات التي لها ردود، والأقسام التي فيها أقسام فرعية، وأكثر ما تحتاجه معها أن تمرّ عليها كلّها في قائمة واحدة مسطّحة.
يكفيك arr.flat(Infinity) للمصفوفات المتداخلة، لكنّ الشجرة الحقيقية مكوّنة من كائنات لها children، وهذه تحتاج إلى استدعاء ذاتي (recursion)، أي أن تستدعي الدالة نفسها على كل فرع.
والاستدعاء الذاتي يحتاج دائمًا إلى شرط توقّف، وهو هنا الفرع الذي ليس له أبناء.
المطلوب
اكتب flattenTree(nodes) لتُرجع قائمة مسطّحة، يحمل كل عنصر فيها عمقه في depth.
الفحوص
6 فحوص- العدد الكلّي ستّ عقد
- كل عقدة يليها أبناؤها في الترتيب
- العمق صحيح لكل عقدة
- القائمة الفارغة تُرجع قائمة فارغة
- العقدة التي ليس لها أبناء لا تسبّب خطأ
- القائمة معروضة في ستّة أسطر