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

Invert Binary Tree

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

اعكس الشجرة: بدّل الابن الأيسر والابن الأيمن لكل عقدة، بحيث تصبح الشجرة كلها صورة مرآة. أعد الشجرة المعكوسة بالتنسيق نفسه، من دون عناصر -1 في النهاية.

الدالة

invertTree(tree: integer-array) → integer-array
treeinteger-array
الشجرة الثنائية بترتيب المستويات، مع استخدام -1 للدلالة على موضع فارغ
تُرجعinteger-array
الشجرة المعكوسة بترتيب المستويات، دون إدخالات ‎-1‎ في النهاية

القيود

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

أمثلة

المدخلات
tree = [5, 3, 8, 1, 4, -1, 9]
المخرجات
[5, 8, 3, 9, -1, 4, 1]
الشرح
يتبادل ابنا الجذر 3 و8 موضعيهما. تحتهما، يعود 1 و4 اللذان كانا أسفل 3 بترتيب 4 و1، أما 8، الذي كان له ابن أيمن فقط هو 9، فأصبح لديه الآن ابن أيسر.

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

challenge icon

سؤال إضافي

كيف تتحقق مما إذا كانت الشجرة صورةً مرآتيّةً لنفسها، باستخدام أزواج الفهارس نفسها ولكن من دون إنشاء نسخة معكوسة؟

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

الحالة 1

الحالة 2

الحالة 3

المدخلات

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

المتوقع

[5, 8, 3, 9, -1, 4, 1]