الدرس 5 من 8

تسطيح القوائم المتداخلة

هدف الدرس

تحويل شجرة إلى قائمة

01

الشرح

ستقابل القوائم المتداخلة في كل مكان، مثل التعليقات التي لها ردود، والأقسام التي فيها أقسام فرعية، وأكثر ما تحتاجه معها أن تمرّ عليها كلّها في قائمة واحدة مسطّحة.

يكفيك arr.flat(Infinity) للمصفوفات المتداخلة، لكنّ الشجرة الحقيقية مكوّنة من كائنات لها children، وهذه تحتاج إلى استدعاء ذاتي (recursion)، أي أن تستدعي الدالة نفسها على كل فرع.

والاستدعاء الذاتي يحتاج دائمًا إلى شرط توقّف، وهو هنا الفرع الذي ليس له أبناء.

02

المطلوب

اكتب flattenTree(nodes) لتُرجع قائمة مسطّحة، يحمل كل عنصر فيها عمقه في depth.

الفحوص

6 فحوص
  1. العدد الكلّي ستّ عقد
  2. كل عقدة يليها أبناؤها في الترتيب
  3. العمق صحيح لكل عقدة
  4. القائمة الفارغة تُرجع قائمة فارغة
  5. العقدة التي ليس لها أبناء لا تسبّب خطأ
  6. القائمة معروضة في ستّة أسطر
03

تلميحات

0/3
دروس المسارأتممت 0 من 8

تكتب هنا مرّة واحدة دوالًا تستعملها في كل مشروع بعد ذلك، مثل البحث والترتيب والتجميع وتسطيح القوائم المتداخلة.

مستواه متقدّم، وفيه 8 دروس مجموع مدّتها ساعة ونصف.

index.html
المعاينة
index.html100%
–/6

اضغط «تشغيل وتصحيح» ليبدأ الفحص.

تجد 6 فحوص في بطاقة «المطلوب».

دروس المسارأتممت 0 من 8

تكتب هنا مرّة واحدة دوالًا تستعملها في كل مشروع بعد ذلك، مثل البحث والترتيب والتجميع وتسطيح القوائم المتداخلة.

مستواه متقدّم، وفيه 8 دروس مجموع مدّتها ساعة ونصف.