مهمة برمجية: بناء متكرر لشجرة متوازنة من المجاميع التجميعية
C++
Hard
recursion
مهمة «مهمة برمجية: بناء متكرر لشجرة متوازنة من المجاميع التجميعية»
<div>مصفوفة من الأعداد الصحيحة A بحجم N. المطلوب بناء شجرة ثنائية بشكل استدعائي، حيث تحتوي كل عقدة على المجموع التراكمي للعناصر في الفترة [l, r)، بالإضافة إلى المؤشرين l و r. الجذر يمثل الفترة [0, N). قم بتقسيم الفترة إلى نصفين بشكل استدعائي (النصف الأيسر [l, mid)، والنصف الأيمن [mid, r))، حتى يصبح طول الفترة 1. لكل عقدة، احسب مجموع العناصر في فترتها. اطبع الشجرة بترتيب اجتياز العمق أولاً (pre-order): لكل عقدة، اطبع l و r والمجموع. استخدم الاستدعاء الذاتي. N <= 100، الأعداد في المصفوفة قيمتها المطلقة <= 10^6.</div>
تنسيق الإدخال
السطر الأول: عدد صحيح N (1 <= N <= 100). السطر الثاني: N من الأعداد الصحيحة A[i] (-10^6 <= A[i] <= 10^6).
تنسيق الإخراج
لكل عقدة بترتيب pre-order، قم بإخراج ثلاثة أرقام: l, r, sum. كل عقدة في سطر منفصل. إذا كانت الفترة فارغة (l == r)، لا تقم بإخراج أي شيء.
أمثلة
مثال 1
الإدخال
4
1 2 3 4
الإخراج
0 4 10
0 2 3
0 1 1
1 2 2
2 4 7
2 3 3
3 4 4
مثال 2
الإدخال
2
-5 5
الإخراج
0 2 0
0 1 -5
1 2 5
main.cpp