Number of nodes in the sub tree with the same label
January 12, 2023
treeProblem URL: Number of nodes in the sub tree with the same label
We will create a tree from the edges list. Then we will start DFS from starting node 0
. Then we will calculate all the nodes in the subtree of each node. Finally we will return the number of nodes in the subtree of each node.
class Solution:
def countSubTrees(self, n: int, edges: List[List[int]], labels: str) -> List[int]:
tree = collections.defaultdict(list)
for s,e in edges:
tree[s].append(e)
tree[e].append(s)
res = [0] * n
def dfs(node = 0, par = -1):
count = collections.Counter()
for nei in tree[node]:
if nei != par:
count += dfs(nei, node)
count[labels[node]] += 1
res[node] = count[labels[node]]
return count
dfs()
return res
Time complexity: O(n)
Space complexity: O(n)