[Golang] DFS solution with map
```\nfunc smallestMissingValueSubtree(parents []int, nums []int) []int {\n\tvar l int = len(parents)\n\tvar graph [][]int = make([][]int,l)\n\tfor i := 0;i < l;
```\nfunc smallestMissingValueSubtree(parents []int, nums []int) []int {\n\tvar l int = len(parents)\n\tvar graph [][]int = make([][]int,l)\n\tfor i := 0;i < l;i++{\n\t\tif parents[i] != -1{\n\t\t\tgraph[parents[i]] = append(graph[parents[i]],i)\n\t\t}\n\t}\n\tvar res []int = make([]int,l)\n\tvar dfs func(int) map[int]bool\n\tdfs = func(i int)map[int]bool{\n\t\tvar visited map[int]bool = make(map[int]bool)\n\t\tres[i] = 1\n\t\tfor _,child := range graph[i]{\n\t\t\tret := dfs(child)\n\t\t\tif res[child] > res[i]{\n\t\t\t\tres[i] = res[child]\n\t\t\t}\n\t\t\tif len(ret) > len(visited){ //Merge small map to bigger map to avoid TLE\n\t\t\t\tvisited,ret = ret,visited\n\t\t\t}\n\t\t\tfor val,_ := range ret{\n\t\t\t\tvisited[val] = true\n\t\t\t}\n\t\t}\n\t\tvisited[nums[i]] = true\n\t\tfor visited[res[i]]{\n\t\t\tres[i]++\n\t\t}\n\t\treturn visited\n\t}\n\tdfs(0)\n\treturn res\n}
['Depth-First Search', 'Go']