508. 出现次数最多的子树元素和

曾经终败给现在 2022-12-24 00:39 194阅读 0赞

题目来源

508. 出现次数最多的子树元素和

题目描述

在这里插入图片描述

题目解析

  1. /**
  2. * Definition for a binary tree node.
  3. * public class TreeNode {
  4. * int val;
  5. * TreeNode left;
  6. * TreeNode right;
  7. * TreeNode(int x) { val = x; }
  8. * }
  9. */
  10. class Solution {
  11. private int maxCount = 0;
  12. private Map<Integer, Integer> map = new HashMap<Integer, Integer>();
  13. public int[] findFrequentTreeSum(TreeNode root) {
  14. helper(root);
  15. LinkedList<Integer> list = new LinkedList<>();
  16. for (Integer key : map.keySet() ){
  17. if (map.get(key) == maxCount){
  18. list.add(key);
  19. }
  20. }
  21. int[] ints = new int[list.size()];
  22. for (int i = 0; i < list.size(); i++){
  23. ints[i] = list.get(i);
  24. }
  25. return ints;
  26. }
  27. private int helper(TreeNode root){
  28. if (root == null){
  29. return 0;
  30. }
  31. int left = helper(root.left);
  32. int right = helper(root.right);
  33. root.val = root.val + left + right;
  34. map.put(root.val, map.getOrDefault(root.val, 0) + 1);
  35. maxCount = Math.max(maxCount, map.get(root.val));
  36. return root.val;
  37. }
  38. }

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,194人围观)

还没有评论,来说两句吧...

相关阅读