[Leetcode] 0261. 그래프 유효 트리

Python, C++, JavaScript, SQL 및 TypeScript의 다양한 LeetCode 솔루션을 살펴보세요. 여러 프로그래밍 언어로 인터뷰 준비, 학습 및 코드 연습에 적합합니다. Github 레포 링크

중간


당신은 그래프를 가지고 있습니다 N 다음에서 레이블이 지정된 노드 0 에게 n-1정수 n과 의 목록이 주어집니다. 가장자리 어디 가장자리[i] = [ ai , bi ] 노드 사이에 방향이 지정되지 않은 가장자리가 있음을 나타냅니다. 일체 포함 그리고 나는 그래프에서.

반품 진실 주어진 그래프의 가장자리가 유효한 트리를 구성하는 경우 거짓 그렇지 않으면.

 

예시 1:

입력: n = 5, 모서리 = [[0,1],[0,2],[0,3],[1,4]]
산출: 진실

예 2:

입력: n = 5, 모서리 = [[0,1],[1,2],[2,3],[1,3],[1,4]]
산출: 거짓

 

제약:

  • 1 <= n <= 2000
  • 0 <= 가장자리.길이 <= 5000
  • 가장자리[i].길이 == 2
  • 0 <= a i , b i < n
  • 나는 != 나는
  • 자체 루프나 반복되는 에지가 없습니다.

파이썬

				
					# 시간 복잡도: O(n) # 공간 복잡도: O(n) 입력 가져오기 목록 클래스 UnionFind: def __init__(self, n: int) -> 없음: self.parents = list(range(n)) def find( self, node: int) -> int: while node != self.parents[node]: node = self.parents[node] return node def Union(self, nodeX: int, nodeY: int) -> bool: parentX, parentY = self.find(nodeX), self.find(nodeY) if parentX == parentY: return False self.parents[parentX] = parentY return True 클래스 해결 방법: def validTree(self, n: int, edge: List[List [int]]) -> bool: len(edges) != n - 1: return False disjointUnionSet = startVertex에 대한 UnionFind(n), 가장자리의 endVertex: disjointUnionSet.union(startVertex, endVertex)이 아닌 경우 False 반환 True 반환 n = 5개의 모서리 = [[0, 1], [0, 2], [0, 3], [2, 3]] print(Solution().validTree(n, edge))
				
			
ko_KR한국어