Menu
CoddyTech

Binary Tree Zigzag Level Order Traversal

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

أعِد قيم العقد مستوىً تلو الآخر بترتيب متعرّج: مستوى الجذر من اليسار إلى اليمين، والمستوى التالي من اليمين إلى اليسار، وهكذا بالتناوب حتى أعمق مستوى. يُسمّى هذا أيضًا اجتياز ترتيب المستويات الحلزوني.

الدالة

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

القيود

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

أمثلة

المدخلات
root = [8, 12, 5, 1, 9, -1, 14, -1, -1, 4, 2, -1, -1, 11]
المخرجات
[[8], [5, 12], [1, 9, 14], [11, 2, 4]]
الشرح
عند القراءة من اليسار إلى اليمين، تكون المستويات 8؛ 12, 5؛ 1, 9, 14؛ 4, 2, 11. يُقرأ المستويان 1 و3 بالعكس: [5, 12] و[11, 2, 4].
challenge icon

سؤال إضافي

هل يمكنك وضع كل قيمة مباشرةً في موضعها النهائي في صفّها، من دون عكس ومن دون مكدّس ثانٍ؟

إعادة ضبط الشيفرة
def zigzagLevelOrder(root):
    # اكتب الكود هنا

اختبار #1

اختبار #2

اختبار #3

وسيط

root = [8, 12, 5, 1, 9, -1, 14, -1, -1, 4, 2, -1, -1, 11]

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

[[8], [5, 12], [1, 9, 14], [11, 2, 4]]