Find Duplicate Subtrees
Thoughts
Code
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
private String postOrder(TreeNode node, Map<String, Integer> strings, List<TreeNode> res) {
if (node == null) {
return "#";
}
String str = node.val + "," + postOrder(node.left, strings, res) + "," + postOrder(node.right, strings, res);
if (strings.getOrDefault(str, 0) == 1) {
res.add(node);
}
strings.put(str, strings.getOrDefault(str, 0) + 1);;
return str;
}
public List<TreeNode> findDuplicateSubtrees(TreeNode root) {
List<TreeNode> res = new ArrayList<>();
postOrder(root, new HashMap<>(), res);
return res;
}
}Analysis
Ver.2
Last updated