261. Graph Valid Tree.md 1.0 KB
Newer Older
K
KEQI HUANG 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
### 261. Graph Valid Tree



题目: 
<https://leetcode.com/problems/graph-valid-tree/>



难度 : Medium



思路:

graph 为 tree 两个条件:

- 这个图是connected
- 没有cycle



偷懒AC代码,直接在323题,Number of Connected Components in an Undirected Graph上改的AC代码:



```
class Solution(object):
    def validTree(self, n, edges):
        """
        :type n: int
        :type edges: List[List[int]]
        :rtype: bool
        """
        def find(x):
        	if uf[x] != x:
        		uf[x] = find(uf[x])
        	return uf[x]

        def union(x,y):
        	xRoot = find(x)
        	yRoot = find(y)
        	uf[xRoot] = yRoot

        uf = [i for i in range(n)]

        for node1, node2 in edges:
            # cycle exists
            if find(node1) == find(node2):
                print 'ha '
                return False
            else:
                union(node1, node2)

        res = set()
        for i in range(n):
        	res.add(find(i))

        return len(res) == 1
```