دمج وإعادة بناء الكائنات المتداخلة مع التجميع
JavaScript
Hard
objects
مهمة «دمج وإعادة بناء الكائنات المتداخلة مع التجميع»
اكتب دالة تستقبل مصفوفة من الكائنات تحتوي على الحقول التالية: id (رقم)، parentId (رقم أو null)، name (نص) و value (رقم). يجب بناء شجرة حيث تحتوي كل عقدة على الحقول id، name، value (مجموع values جميع العقد الفرعية وقيمتها الخاصة)، children (مصفوفة من العقد الفرعية، مرتبة حسب name ترتيبًا أبجديًا). تعتبر العقدة الجذر هي التي يكون parentId = null. إذا لم يتم العثور على parentId، يتم تجاهل الكائن. إذا كان هناك عدة كائنات بنفس id، يتم الاحتفاظ بالأول فقط. أخرج الشجرة الناتجة على شكل سلسلة JSON (بدون مسافات). يُضمن وجود جذر واحد فقط.
تنسيق الإدخال
السطر الأول هو الرقم N (عدد الكائنات). ثم N من الأسطر، كل سطر بالتنسيق: id parentId name value (الحقول مفصولة بمسافة، name عبارة عن سلسلة نصية بدون مسافات).
تنسيق الإخراج
سطر واحد — تمثيل JSON للعقدة الجذرية للشجرة (مع الأطفال المتداخلين).
أمثلة
مثال 1
الإدخال
3
10 null A 100
20 10 B 50
30 10 C 30
الإخراج
{"id":10,"name":"A","value":180,"children":[{"id":20,"name":"B","value":50,"children":[]},{"id":30,"name":"C","value":30,"children":[]}]}
main.js