Menu
CoddyTech
flag Ar iconالعربيةdown icon

Binary Tree Level Order Traversal

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

أعِد قيم العقد مستوىً تلو الآخر: قائمة تحتوي على قيمة الجذر، ثم قائمة بالقيم في المستوى الذي يليه من اليسار إلى اليمين، وهكذا حتى أعمق مستوى.

الدالة

levelOrder(tree: integer-array) → integer-2d-array
treeinteger-array
الشجرة بترتيب الكومة، مع ‎-1 للمكان الفارغ
تُرجعinteger-2d-array
قائمة واحدة من القيم لكل مستوى، بدءًا بالمستوى الأعلى، وكل قائمة من اليسار إلى اليمين

القيود

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

أمثلة

المدخلات
tree = [4, 9, 2, -1, 6, 8, 5, -1, -1, 3]
المخرجات
[[4], [9, 2], [6, 8, 5], [3]]
الشرح
للجذر 4 ابنان هما 9 و2 عند الفهرسين 1 و2. الفهرس 3 فارغ، لذا يكون المستوى الثالث هو 6 (الفهرس 4، تحت 9)، ثم 8 و5 (الفهرسان 5 و6، تحت 2). أما 3 عند الفهرس 9 فهو الابن الأيسر لـ6، منفردًا في المستوى الرابع.

lock icon+15 اختبارات مخفية عند الإرسال

challenge icon

سؤال إضافي

هل يمكنك إرجاع المستويات بترتيب متعرج، الأول من اليسار إلى اليمين، والثاني من اليمين إلى اليسار، وهكذا، دون ترتيب أي مستوى؟

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

الحالة 1

الحالة 2

الحالة 3

المدخلات

tree = [4, 9, 2, -1, 6, 8, 5, -1, -1, 3]

المتوقع

[[4], [9, 2], [6, 8, 5], [3]]