Menu
CoddyTech

Path Sum

لديك شجرة ثنائية مخزّنة في المصفوفة tree بترتيب المستويات، ورقم targetSum. يقع الجذر عند الفهرس 0، ويقع ابنا العقدة عند الفهرس i عند 2*i+1 (الأيسر) و2*i+2 (الأيمن)، وتشير -1 إلى موضع فارغ، وقد تنتهي المصفوفة بعناصر -1 إضافية. أرجِع true إذا كان هناك مسار من الجذر نزولًا إلى ورقة تكون قيمه مجتمعة مساوية لـ targetSum، وإلا فأرجِع false. الورقة هي عقدة يكون موضعا ابنيها فارغين.

الدالة

hasPathSum(tree: integer-array, targetSum: integer) → boolean
treeinteger-array
الشجرة الثنائية بترتيب المستويات، مع استخدام -1 للدلالة على موضع فارغ
targetSuminteger
المجموع الذي يجب أن يبلغه المسار من الجذر إلى الورقة
تُرجعboolean
صحيح إذا كان مجموع إحدى المسارات من الجذر إلى الورقة يساوي targetSum، وخطأ خلاف ذلك

القيود

  • 1 ≤ tree.length ≤ 32767
  • كل tree[i] إما -1 أو قيمة تحقق 0 ≤ tree[i] ≤ 1000.
  • tree[0] لا تساوي أبدًا -1، لذا تحتوي الشجرة على عقدة واحدة على الأقل.
  • قد تنتهي المصفوفة بعناصر إضافية -1 بعد العقدة الأخيرة.
  • كلا الابنين في الموضع الفارغ فارغان أيضًا، والعمق لا يتجاوز 14.
  • 0 ≤ targetSum ≤ 15000

أمثلة

المدخلات
tree = [3, 9, 6, -1, 2, 1, 7]targetSum = 14
المخرجات
true
الشرح
المسار 3، 9، 2 (الفهارس 0، 1، 4) مجموعها 14، و2 عند الفهرس 4 عقدة ورقية.
challenge icon

سؤال إضافي

هل يمكنك عدّ المسارات التي يكون مجموعها targetSum إذا كان من الممكن أن يبدأ المسار عند أي عقدة وينتهي عند أي عقدة أسفلها؟

إعادة ضبط الشيفرة
def hasPathSum(tree, targetSum):
    # اكتب الكود هنا

اختبار #1

اختبار #2

اختبار #3

الوسائط

tree = [3, 9, 6, -1, 2, 1, 7]
targetSum = 14

الإخراج المتوقع

true