标记一下,暂未弄懂
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */ class Solution { HashMap<String,Integer> record = new HashMap<>(); LinkedList<TreeNode> res = new LinkedList<>(); public List<TreeNode> findDuplicateSubtrees(TreeNode root) { traverse(root); return res; } String traverse(TreeNode root){ if (root == null){ return "#"; } String left = traverse(root.left); String right = traverse(root.right); String subTree = left+","+right+","+root.val; int freq = record.getOrDefault(subTree,0); if (freq == 1){ res.add(root); } record.put(subTree,freq+1); return subTree; } }