| 12345678910111213141516171819202122232425 | 
							- /**
 
-  * Definition for a binary tree node.
 
-  * type TreeNode struct {
 
-  *     Val int
 
-  *     Left *TreeNode
 
-  *     Right *TreeNode
 
-  * }
 
-  */
 
- func findDuplicateSubtrees(root *TreeNode) (res []*TreeNode) {
 
- 	m := make(map[string]int)
 
- 	helper(root, m, &res)
 
- 	return res
 
- }
 
- func helper(root *TreeNode, m map[string]int, res *[]*TreeNode) string {
 
- 	if root == nil {
 
- 		return "#"
 
- 	}
 
- 	path := helper(root.Left, m, res) + " " + helper(root.Right, m, res) + " " + strconv.Itoa(root.Val)
 
- 	if m[path] == 1 {
 
- 		*res = append(*res, root)
 
- 	}
 
- 	m[path]++
 
- 	return path
 
- }
 
 
  |