不大明白咋写诺。。。后序遍历
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
int maxCount;
Map<Integer,Integer> map ;
public int[] findFrequentTreeSum(TreeNode root) {
maxCount = 0;
map = new HashMap<Integer,Integer>();
postOrder( root );
List<Integer> res = new ArrayList<>();
for( int i : map.keySet() ){
if( map.get( i ) == maxCount )
res.add( i );
}
int[] rr = new int[ res.size() ];
for( int i = 0 ; i < res.size() ; i ++ )
rr[ i ] = res.get( i );
return rr;
}
private int postOrder( TreeNode root ){
if( root == null )return 0;
int left = postOrder( root.left );
int right = postOrder( root.right );
int sum = left + right + root.val;
int cou = map.getOrDefault( sum , 0 ) + 1;
map.put( sum , cou );
maxCount = Math.max( maxCount , cou );
return sum;
}
}