508. 出现次数最多的子树元素和
给你一个二叉树的根结点,请你找出出现次数最多的子树元素和。一个结点的「子树元素和」定义为以该结点为根的二叉树上所有结点的元素之和(包括结点本身)。
你需要返回出现次数最多的子树元素和。如果有多个元素出现的次数相同,返回所有出现次数最多的子树元素和(不限顺序)。
链接
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
function findFrequentTreeSum(root: TreeNode | null): number[] { const dataMap: Map<number, number> = new Map() let max = 1 function traverse(node: TreeNode | null): number { if (node === null) return 0 let res = node.val res += traverse(node.left) res += traverse(node.right) let resNum = (dataMap.get(res) || 0) + 1 dataMap.set(res, resNum) max = Math.max(max, resNum) return res } traverse(root) const resList = [] for (const [key, value] of dataMap) { if (value === max) { resList.push(key) } } return resList };
|