Menu
CoddyTech

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]]
الشرح
الفهرس 3 فارغ، لذا فإن 9 له ابن أيمن فقط، وهو 6. يتكوّن المستوى الثالث من 6 و8 و5، أما 3 عند الفهرس 9، الواقع أسفل 6، فهو وحده في المستوى الرابع.
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]]