Number of Nodes in the Sub-Tree With the Same Label LeetCode solution in Java

1
class Solution {
2
int[] res;
3

4
public int[] countSubTrees(int n, int[][] edges, String labels) {
5
res = new int[n];
6
Map<Integer, List<Integer>> adjList = new HashMap<>();
7
for (int i = 0; i < n; i++) {
8
adjList.put(i, new ArrayList<>());
9
}
10
for (int[] edge : edges) {
11
adjList.get(edge[0]).add(edge[1]);
12
adjList.get(edge[1]).add(edge[0]);
13
}
14
postOrderDfs(adjList, labels, 0, -1);
15
return res;
16
}
17

18
int[] postOrderDfs(Map<Integer, List<Integer>> adjList, String labels, int n, int parent) {
19
int[] chars = new int[26];
20
chars[labels.charAt(n) - 'a']++;
21
for (int next : adjList.get(n)) {
22
if (next != parent) mergeArrCounts(chars, postOrderDfs(adjList, labels, next, n));
23
}
24
res[n] = chars[labels.charAt(n) - 'a'];
25
return chars;
26
}
27

28
// Merge from B to A
29
void mergeArrCounts(int[] A, int[] B) {
30
for (int i = 0; i < 26; i++) {
31
A[i] += B[i];
32
}
33
}
34
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0