Menu
CoddyTech

Graph Valid Tree

لديك n من العقد، مرقّمة من 0 إلى n-1، وقائمة edges من الحواف غير الموجّهة. يصل كل زوج [a, b] بين العقدة a والعقدة b.

أعِد true إذا كانت الحواف تجعل العقد n كلها شجرة واحدة: بحيث يمكن لكل عقدة الوصول إلى كل عقدة أخرى، ولا توجد أي دورة. أعِد false خلاف ذلك.

الدالة

validTree(n: integer, edges: integer-2d-array) → boolean
ninteger
عدد العُقد، المرقّمة من 0 إلى n-1
edgesinteger-2d-array
الحواف غير الموجّهة، كلٌّ منها زوج [a, b]
تُرجعboolean
true إذا كانت الحواف تصل جميع العقد الـ n في شجرة واحدة، وfalse خلاف ذلك

القيود

  • 2 ≤ n ≤ 104
  • 1 ≤ edges.length ≤ 5000
  • edges[i] = [a, b] حيث 0 ≤ a, b ≤ n-1 وa ≠ b
  • لا تظهر أي حافة مرتين، في أيٍّ من الاتجاهين.

أمثلة

المدخلات
n = 5edges = [[0, 1], [0, 2], [0, 3], [1, 4]]
المخرجات
true
الشرح
ترتبط العقدة 0 بالعقد 1 و2 و3، وتتفرع العقدة 4 من العقدة 1. تربط أربعة أضلاع العقد الخمس جميعها من دون أي دورة، لذا فهذا رسم شجري.
challenge icon

سؤال إضافي

عندما لا يكون الرسم البياني شجرة، فكم حافة يجب أن تحذف، وكم حافة يجب أن تضيف، ليصبح شجرة؟ هل يمكنك حساب كليهما في مرور واحد؟

إعادة ضبط الشيفرة
def validTree(n, edges):
    # اكتب الكود هنا

اختبار #1

اختبار #2

اختبار #3

الوسائط

n = 5
edges = [[0, 1], [0, 2], [0, 3], [1, 4]]

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

true