题目:
https://leetcode-cn.com/problems/find-duplicate-subtrees/
import java.util.*;
public class _652_FindDuplicateSubtrees {
private Map<String, Integer> map;
private List<TreeNode> ans;
public List<TreeNode> findDuplicateSubtrees(TreeNode root) {
map = new HashMap<>();
ans = new ArrayList<>();
traverse(root);
return ans;
}
public String traverse(TreeNode root) {
if (root == null) {
return "#";
}
String s = root.val + "," + traverse(root.right) + "," + traverse(root.left);
map.put(s, map.getOrDefault(s,0)+1);
if(map.get(s) == 2) {
ans.add(root);
}
return s;
}
public static void main(String[] args){
TreeNode t = new TreeNode(1, new TreeNode(2, new TreeNode(4), null), new TreeNode(3,new TreeNode(2, new TreeNode(4),null),new TreeNode(4)));
new _652_FindDuplicateSubtrees().findDuplicateSubtrees(t);
}
}