Menu
CoddyTech

Top View of Binary Tree

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

يقع الجذر في العمود 0؛ ويقع الابن الأيسر في عمود يقع يسار عمود أبيه بواحد، والابن الأيمن في عمود يقع يمين عمود أبيه بواحد. عند النظر من الأعلى، ترى العقدة الأقل عمقًا في كل عمود؛ وعند التعادل، ترى العقدة التي تأتي أولًا في مستواها من اليسار إلى اليمين (ذات الفهرس الأصغر). أعد القيم التي تراها، من العمود الأيسر إلى العمود الأيمن.

الدالة

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

القيود

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

أمثلة

المدخلات
root = [5, 2, 9, 4, 7, 1, 6]
المخرجات
[4, 2, 5, 9, 6]
الشرح
من اليسار إلى اليمين، تحتوي الأعمدة على 4 (العمود -2)، و2 (-1)، والجذر 5 (0)، و9 (1)، و6 (2). يقع 7 و1 أيضًا في العمود 0، لكن الجذر فوقهما.
challenge icon

سؤال إضافي

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

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

اختبار #1

اختبار #2

اختبار #3

وسيط

root = [5, 2, 9, 4, 7, 1, 6]

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

[4, 2, 5, 9, 6]