0508.出现次数最多的子树元素和
题目大意
求所有出现次数最多的子树元素和
思路与代码
递归
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @return {number[]}
*/
var findFrequentTreeSum = function (root) {
const map = new Map();
const sum = (node) => {
if (!node) return 0;
const s = sum(node.left) + sum(node.right) + node.val;
map.set(s, (map.get(s) ?? 0) + 1);
return s;
};
sum(root);
let max = 0;
for (const item of map.values()) {
if (item > max) {
max = item;
}
}
const ret = [];
for (const [key, value] of map.entries()) {
if (value === max) {
ret.push(key);
}
}
return ret;
};空间复杂度:O(n)
时间复杂度:O(n)
