Menu
CoddyTech

Graph Valid Tree

Se te dan n nodos, numerados del 0 al n-1, y una lista edges de aristas no dirigidas. Cada par [a, b] conecta el nodo a con el nodo b.

Devuelve true si las aristas forman un único árbol con los n nodos: cada nodo puede llegar a todos los demás y no hay ningún ciclo. En caso contrario, devuelve false.

Función

validTree(n: integer, edges: integer-2d-array) → boolean
ninteger
el número de nodos, numerados del 0 al n-1
edgesinteger-2d-array
las aristas no dirigidas, cada una un par [a, b]
Devuelveboolean
true si las aristas conectan los n nodos en un único árbol; false en caso contrario

Restricciones

  • 2 ≤ n ≤ 104
  • 1 ≤ edges.length ≤ 5000
  • edges[i] = [a, b] con 0 ≤ a, b ≤ n-1 y a ≠ b
  • No aparece ninguna arista dos veces, en ninguna dirección.

Ejemplos

Entrada
n = 5edges = [[0, 1], [0, 2], [0, 3], [1, 4]]
Salida
true
Explicación
El nodo 0 está conectado con los nodos 1, 2 y 3, y el nodo 4 cuelga del nodo 1. Cuatro aristas unen los cinco nodos sin formar ningún ciclo, así que esto es un árbol.
challenge icon

Para ir más allá

Cuando el grafo no es un árbol, ¿cuántas aristas debes eliminar y cuántas agregar para convertirlo en uno? ¿Puedes contar ambas en una sola pasada?

Restablecer código
def validTree(n, edges):
    # Escribe el código aquí

Prueba #1

Prueba #2

Prueba #3

Argumentos

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

Salida Esperada

true