Find Duplicate Subtrees
Last updated
Last updated
class Solution {
public List<TreeNode> findDuplicateSubtrees(TreeNode root) {
List<TreeNode> res = new ArrayList<>();
Map<String, Integer> map = new HashMap<>();
dfs(root, res, map);
return res;
}
private String dfs(TreeNode root, List<TreeNode> res,
Map<String, Integer> map) {
if (root == null) return "#";
String s = root.val + "," + dfs(root.left, res, map) +
"," + dfs(root.right, res, map);
map.put(s, map.getOrDefault(s, 0) + 1);
if (map.get(s) == 2) {
res.add(root);
}
return s;
}
}