1. 解题思路
这一题思路上的话其实就是一个树的遍历,由于已知根节点为0,因此还比较简单,随便用一个深度优先遍历查看一下每一个节点所包含的所有子结点的个数即可。
2. 代码实现
给出python代码实现如下:
class Solution:
def countGoodNodes(self, edges: List[List[int]]) -> int:
graph = defaultdict(list)
for u, v in edges:
graph[u].append(v)
graph[v].append(u)
ans = 0
def dfs(root, parent):
nonlocal ans
cnt = 0
children = []
for u in graph[root]:
if u == parent:
continue
c = dfs(u, root)
children.append(c)
cnt += c
cnt += 1
if children == [] or all(x == children[0] for x in children):
ans += 1
return cnt
dfs(0, -1)
return ans
提交代码评测得到:耗时3083ms,占用内存90.4MB。