Skip to content

Commit b0b5646

Browse files
committed
图是否是树
1 parent f2e2fda commit b0b5646

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

graph_valid_tree.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# -*- coding: utf-8 -*-
2+
3+
class Solution:
4+
# @param {int} n an integer
5+
# @param {int[][]} edges a list of undirected edges
6+
# @return {boolean} true if it's a valid tree, or false
7+
def validTree(self, n, edges):
8+
# Write your code here
9+
# 如果是树,n个点有n - 1条边,遍历后包含所有点。
10+
if len(edges) != (n - 1):
11+
return False
12+
# 重新构造无向树,[m, n] => t[m][n] = t[n][m] = True。
13+
tree = [[False] * n for i in xrange(n)]
14+
visited = [False] * n
15+
for edge in edges:
16+
tree[edge[0]][edge[1]] = True
17+
tree[edge[1]][edge[0]] = True
18+
# 从节点0开始深度遍历,这里顺便解决了输入为"1, []"的情况。
19+
self.dfs(tree, visited, 0)
20+
for i in xrange(n):
21+
if not visited[i]:
22+
return False
23+
return True
24+
25+
def dfs(self, tree, visited, node):
26+
visited[node] = True
27+
for i in xrange(len(tree[node])):
28+
if tree[node][i] and (not visited[i]):
29+
self.dfs(tree, visited, i)

0 commit comments

Comments
 (0)