Menu
CoddyTech

Diameter of Binary Tree

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

الدالة

diameterOfBinaryTree(tree: integer-array) → integer
treeinteger-array
الشجرة الثنائية بترتيب المستويات، مع استخدام ‎-1‎ للدلالة على موضع فارغ
تُرجعinteger
عدد الحواف في أطول مسار بين عقدتين

القيود

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

أمثلة

المدخلات
tree = [8, 3, 6, 1, 4, -1, -1, -1, -1, 7]
المخرجات
4
الشرح
يحتوي المسار 7، 4، 3، 8، 6 (الفهارس 9، 4، 1، 0، 2) على خمس عقد متصلة بأربع حواف. وينعطف عند الجذر: ثلاث حواف نزولًا على الجانب الأيسر وواحدة نزولًا على الجانب الأيمن.
challenge icon

سؤال إضافي

كيف يمكنك إرجاع المسار نفسه، وقيم العُقد من أحد طرفَي القطر إلى الطرف الآخر؟

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

اختبار #1

اختبار #2

اختبار #3

وسيط

tree = [8, 3, 6, 1, 4, -1, -1, -1, -1, 7]

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

4