Menu
CoddyTech

Graph Valid Tree

Tu reçois n nœuds, numérotés de 0 à n-1, ainsi qu’une liste edges d’arêtes non orientées. Chaque paire [a, b] relie le nœud a au nœud b.

Renvoie true si les arêtes forment un seul arbre avec les n nœuds : chaque nœud peut atteindre tous les autres et il n’y a aucun cycle. Renvoie false sinon.

Fonction

validTree(n: integer, edges: integer-2d-array) → boolean
ninteger
le nombre de nœuds, numérotés de 0 à n-1
edgesinteger-2d-array
les arêtes non orientées, chacune étant une paire [a, b]
Renvoieboolean
true si les arêtes relient les n nœuds en un seul arbre, false sinon

Contraintes

  • 2 ≤ n ≤ 104
  • 1 ≤ edges.length ≤ 5000
  • edges[i] = [a, b] avec 0 ≤ a, b ≤ n-1 et a ≠ b
  • Aucune arête n’apparaît deux fois, dans un sens ou dans l’autre.

Exemples

Entrée
n = 5edges = [[0, 1], [0, 2], [0, 3], [1, 4]]
Sortie
true
Explication
Le nœud 0 est relié aux nœuds 1, 2 et 3, et le nœud 4 est rattaché au nœud 1. Quatre arêtes relient les cinq nœuds sans former de boucle : c’est donc un arbre.
challenge icon

Pour aller plus loin

Lorsque le graphe n’est pas un arbre, combien d’arêtes faut-il supprimer et combien en ajouter pour en faire un arbre ? Peux-tu compter les deux en un seul parcours ?

Réinitialiser le code
def validTree(n, edges):
    # Écrivez le code ici

Test #1

Test #2

Test #3

Arguments

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

Résultat attendu

true