# coding: utf-8 class Solution: # @param {int} n an integer # @param {int[][]} edges a list of undirected edges # @return {boolean} true if it's a valid tree, or false def validTree(self, n, edges): # Write your code here # å¦ææ¯æ ï¼nä¸ªç¹æn - 1æ¡è¾¹ï¼éååå 嫿æç¹ã if len(edges) != (n - 1): return False # éæ°æé æ åæ ï¼[m, n] => t[m][n] = t[n][m] = Trueã tree = [[False] * n for i in xrange(n)] visited = [False] * n for edge in edges: tree[edge[0]][edge[1]] = True tree[edge[1]][edge[0]] = True # ä»èç¹0å¼å§æ·±åº¦éåï¼è¿é顺便解å³äºè¾å ¥ä¸º"1, []"çæ åµã self.dfs(tree, visited, 0) for i in xrange(n): if not visited[i]: return False return True def dfs(self, tree, visited, node): visited[node] = True for i in xrange(len(tree[node])): if tree[node][i] and (not visited[i]): self.dfs(tree, visited, i) # medium: http://lintcode.com/zh-cn/problem/graph-valid-tree/