import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author xnl
* @Description:
* @date: 2022/6/19 22:21
*/
public class Solution {
public static void main(String[] args) {
Solution solution = new Solution();
}
// 记录结果出现的次数
Map<Integer, Integer> map = new HashMap<>();
// 最大次数
int maxValue = 0;
public int[] findFrequentTreeSum(TreeNode root) {
if (root == null){
return null;
}
calculation(root);
List<Integer> list = new ArrayList<>(10);
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
if (entry.getValue() == maxValue){
list.add(entry.getKey());
}
}
int[] result = new int[list.size()];
for (int i = 0; i < list.size(); i++){
result[i] = list.get(i);
}
return result;
}
private int calculation(TreeNode root){
if (root == null){
return 0;
}
int ans = root.val + calculation(root.left) + calculation(root.right);
int value = map.getOrDefault(ans, 0) + 1;
map.put(ans, value);
maxValue = Math.max(maxValue, value);
return ans;
}
}
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;
}
}
力扣:508. 出现次数最多的子树元素和
最新推荐文章于 2025-12-04 16:02:12 发布
本文介绍了一个名为Solution的Java类,用于计算二叉树中每个节点值之和的出现频率,并找出最频繁出现的树和。核心方法包括递归计算树的节点和并更新频率映射,最后返回出现次数最多的树和的值作为结果。
1204

被折叠的 条评论
为什么被折叠?



