码迷,mamicode.com
首页 > 其他好文 > 详细

[leetcode]508. Most Frequent Subtree Sum二叉树中出现最多的值

时间:2018-01-31 11:29:52      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:nod   col   else   log   turn   遍历二叉树   遍历   efault   gpo   

遍历二叉树,用map记录sum出现的次数,每一个新的节点都统计一次。

遍历完就统计map中出现最多的sum

Map<Integer,Integer> map = new HashMap<>();
    public int[] findFrequentTreeSum(TreeNode root) {
        helper(root);
        int max = 0;
        List<Integer> list  = new ArrayList<>();
        for (int key : map.keySet()) {
            int v = map.get(key);
            if (v>max)
            {
                list.clear();
                list.add(key);
                max = v;
            }
            else if (v==max) list.add(key);
        }
        int[] res = new int[list.size()];
        for (int i = 0; i < res.length; i++) {
            res[i] = list.get(i);
        }
        return res;
    }
    public int helper(TreeNode root)
    {
        if (root==null) return 0;
        int cur = root.val;
        cur+= helper(root.left);
        cur+=helper(root.right);
        map.put(cur,map.getOrDefault(cur,0)+1);
        return cur;
    }

 

[leetcode]508. Most Frequent Subtree Sum二叉树中出现最多的值

标签:nod   col   else   log   turn   遍历二叉树   遍历   efault   gpo   

原文地址:https://www.cnblogs.com/stAr-1/p/8390478.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!