Skip to content

Commit 324be12

Browse files
committed
leetcode
1 parent 593bf02 commit 324be12

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -1 +1,39 @@
11
package main
2+
3+
func countSubTrees(n int, edges [][]int, labels string) []int {
4+
var graph = make([][]int, n)
5+
for row := range graph {
6+
graph[row] = make([]int, 0)
7+
}
8+
9+
for _, edge := range edges {
10+
graph[edge[0]] = append(graph[edge[0]], edge[1])
11+
graph[edge[1]] = append(graph[edge[1]], edge[0])
12+
}
13+
14+
var visited = make([]bool, n)
15+
var ans = make([]int, n)
16+
dfs(0, graph, visited, &ans, labels)
17+
return ans
18+
}
19+
20+
func dfs(currentNode int, graph [][]int, visited []bool, ans *[]int, labels string) []int {
21+
var cnt = make([]int, 26)
22+
if visited[currentNode] {
23+
return cnt
24+
}
25+
26+
visited[currentNode] = true
27+
var currentChar byte = labels[currentNode]
28+
29+
for i := 0; i < len(graph[currentNode]); i++ {
30+
sub := dfs(graph[currentNode][i], graph, visited, ans, labels)
31+
for j := 0; j < 26; j++ {
32+
cnt[j] += sub[j]
33+
}
34+
}
35+
36+
cnt[currentChar-'a']++
37+
(*ans)[currentNode] = cnt[currentChar-'a']
38+
return cnt
39+
}

0 commit comments

Comments
 (0)