出现次数最多的子树元素和

508. 出现次数最多的子树元素和

  • 注意返回值
    • 最后也一定要返回来
    • 为了方便拼写,后面就直接写 dfs
      • 这样也不用想着如何拼写
var findFrequentTreeSum = function (root) {
    let mapping = {};
    let res = [];
    
    // 获取每个节点的子元素和
    // 返回值:该元素及所有子节点的和
    function dfs(root) {
        if (!root) return 0;
        // 后序位置
        let left = dfs(root.left);
        let right = dfs(root.right);
        let sum = root.val + left + right;
        mapping[sum] = (mapping[sum] || 0) + 1;
        return sum;
    }
    dfs(root);
    let maxCount = Math.max(...Object.values(mapping));
    let keys = Object.keys(mapping);
    for (let k of keys) {
        if (mapping[k] === maxCount) {
            res.push(parseInt(k));
        }
    }
    return res;
};

目录

题目

undefined