public int[] findFrequentTreeSum(TreeNode root) {
Map<Integer,Integer> map=new HashMap<>();//存储节点值及次数
dfs(root,map);//更新树的节点值
//获取次数最多的值
List<Integer> l=new ArrayList<>();
int max=0;
for(int num:map.keySet()){
int n=map.get(num);
if(n>max){
l=new ArrayList<>();
l.add(num);
max=n;
}else if(max==n){
l.add(num);
}
}
int[] ans=new int[l.size()];
int idx=0;
for(int num:l){
ans[idx++]=num;
}
return ans;
}
int dfs(TreeNode n,Map<Integer,Integer> map){
if(n==null)
return 0;
n.val+=dfs(n.left,map)+dfs(n.right,map);
map.put(n.val,map.getOrDefault(n.val,0)+1);
return n.val;
}