Menu
CoddyTech

Bottom View of Binary Tree

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

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

الدالة

bottomView(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, 1, 9, 6]
الشرح
يحتوي العمود 0 على 5، وعلى مستوى أدنى بمستويين على 7 (الفهرس 4) و1 (الفهرس 5). يظهر 1 لأنه يأتي لاحقًا على المستوى نفسه. تحتوي الأعمدة -2 و-1 و1 و2 على 4 و2 و9 و6.
challenge icon

سؤال إضافي

إذا كان ينبغي أن يُرجع التعادل في أعمق مستوى لعمودٍ ما جميعَ العقد المتعادلة، من اليسار إلى اليمين، فكيف ستتغير النسخة ذات البحث بعرض الشجرة أولًا؟ ماذا ستُرجع القيمة في العمود 0 من المثال 1؟

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

اختبار #1

اختبار #2

اختبار #3

وسيط

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

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

[4, 2, 1, 9, 6]