Menu
CoddyTech

Left View of Binary Tree

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

قف إلى يسار الشجرة. في كل مستوى ترى عقدة واحدة، وهي العقدة الأقرب إلى اليسار؛ أما بقية عقد المستوى فتحجبها. أعد القيم التي تراها، من المستوى الأعلى إلى الأسفل.

الدالة

leftView(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 = [3, 8, 5, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, 1]
المخرجات
[3, 8, 6, 1]
الشرح
8 ورقة، لذا لا يحتوي المستويان الثالث والرابع إلا على 6 (الفهرس 6) و1 (الفهرس 13)، وكلاهما تحت الابن الأيمن 5. مع ذلك، تراهما: [3, 8, 6, 1].
challenge icon

سؤال إضافي

يملأ المستوى d الفهارس من 2^d-1 إلى 2^(d+1)-2. هل يمكنك بناء العرض عبر المرور على تلك النطاقات، من دون استخدام طابور أو استدعاء递归؟ ما تكلفة ذلك على مصفوفة مبطّنة؟

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

اختبار #1

اختبار #2

اختبار #3

وسيط

root = [3, 8, 5, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, 1]

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

[3, 8, 6, 1]