[leetcode]508. Most Frequent Subtree Sum二叉樹中出現最多的值
阿新 • • 發佈:2018-01-31
def class keyset fault 二叉 post 節點 helper list
遍歷二叉樹,用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二叉樹中出現最多的值