Menu
CoddyTech

Graph Valid Tree

n개의 노드가 주어집니다. 노드는 0부터 n-1까지 번호가 매겨져 있으며, 무방향 간선 목록 edges도 주어집니다. 각 쌍 [a, b]는 노드 a와 노드 b를 연결합니다.

간선들이 모든 n개의 노드를 하나의 트리로 만들면 true를 반환합니다. 즉, 모든 노드는 다른 모든 노드에 도달할 수 있고 사이클이 없어야 합니다. 그렇지 않으면 false를 반환합니다.

함수

validTree(n: integer, edges: integer-2d-array) → boolean
ninteger
0부터 n-1까지 번호가 매겨진 노드의 개수
edgesinteger-2d-array
무방향 간선으로, 각각 [a, b] 쌍입니다
반환값boolean
간선들이 모든 n개의 노드를 하나의 트리로 연결하면 true, 그렇지 않으면 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