leetcode508实现在 本地IDE 定义二叉树 运行

package com.javamvc.learning.leetcode;

import java.util.HashMap;
import java.util.Map;

import com.javamvc.learning.leetcode.leetCode508.TreeNode.Solution;

public class leetCode508 {

public static void main(String[] args) {
	TreeNode root = new TreeNode(5);
	TreeNode left1 = new TreeNode(2);
	TreeNode right1 = new TreeNode(-3);
	// 创建一棵树
	root.left = left1;
	root.right = right1;
	leetCode508 leetCode508 = new leetCode508();
	Solution solution = new Solution();
	int[] findFrequentTreeSum = solution.findFrequentTreeSum(root);
	for (int i : findFrequentTreeSum) {
		System.out.println(i);
	}
}

static class TreeNode {
	TreeNode left;
	TreeNode right;
	int val;

	TreeNode(int val) {
		this.val = val;
	}

	static class Solution {
		private Map<Integer, Integer> map = new HashMap<>();
		private int degree = 0;
		private int size = 0; 

		public int[] findFrequentTreeSum(TreeNode root) {
			findSum(root);
			int[] res = new int[size];
			int i = 0;

			for (int n : map.keySet()) {
				if (map.get(n) == degree) {
					res[i++] = n;
				}
			}
			return res;
		}

		public int findSum(TreeNode node) {
			// when node == null, the sum = 0
			if (node == null) {
				return 0;
			}
			int left = findSum(node.left); 
			int right = findSum(node.right); 
			int sum = left + right + node.val;
			map.put(sum, map.getOrDefault(sum, 0) + 1);
			if (map.get(sum) > degree) {
				degree = map.get(sum); 
				size = 1;
			} else if (map.get(sum) == degree) {
				size++;
			}
			return sum;
		}
	}

}}

leetcode508实现在 本地IDE 定义二叉树 运行