zoukankan      html  css  js  c++  java
  • Java实现 LeetCode 508 出现次数最多的子树元素和

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

    给出二叉树的根,找出出现次数最多的子树元素和。一个结点的子树元素和定义为以该结点为根的二叉树上所有结点的元素之和(包括结点本身)。然后求出出现次数最多的子树元素和。如果有多个元素出现的次数相同,返回所有出现次数最多的元素(不限顺序)。

    示例 1
    输入:

      5
     /  
    2   -3
    

    返回 [2, -3, 4],所有的值均只出现一次,以任意顺序返回所有值。

    示例 2
    输入:

      5
     /  
    2   -5
    

    返回 [2],只有 2 出现两次,-5 只出现 1 次。

    提示: 假设任意子树元素和均可以用 32 位有符号整数表示。

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class Solution {
         private int max = 0;
        public int[] findFrequentTreeSum(TreeNode root) {
            if(root == null) return new int[0];
            Map<Integer,Integer> map = new HashMap<>();
            helper(root,map);
            //然后求出map中value最大值对应的Key
            List<Integer> res = new LinkedList<>();
            for(Integer i : map.keySet()){
                if(map.get(i) == max)
                    res.add(i);
            }
            int[] resArr = new int[res.size()];
            for(int i = 0;i < res.size();i++){
                resArr[i] = res.get(i);
            }
            return resArr;
        }
        
        private int helper(TreeNode root,Map<Integer,Integer> map){
            if(root == null) return 0;
            //求出当前节点为根的元素和
            int left = helper(root.left,map);
            int right = helper(root.right,map);
            int val = left+right+root.val;
            map.put(val,map.getOrDefault(val,0)+1);
            max = Math.max(max,map.get(val));
            return val;    
        }
    }
    
  • 相关阅读:
    myeclipse tomcat启动,内存溢出问题
    SQL Server 中的模糊查询 LIKE
    GridView学习
    自己手动创建dataset的方法(不用从数据库倒入)
    关于在updatepanel中response失效的解决方法
    CSS中背景图片定位方法
    Visual Studio 2005中调试SQL Server 2005的存储过程
    第二个dropdownlist不能触发selectchange的问题
    C/C++ 控制台窗口暂停
    蛇形矩阵
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13074991.html
Copyright © 2011-2022 走看看