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))