Count Nodes With the Highest Score LeetCode solution in JavaScript
1var countHighestScoreNodes = function (parents) {2const n = parents.length;3const adj = [];45for (let i = 0; i < n; ++i) {6adj[i] = [];7}89for (let i = 1; i < n; ++i) {10const parent = parents[i];11adj[parent].push(i);12}1314let maxProd = 0;15let maxCount = 0;1617dfs(0);1819return maxCount;2021function dfs(node) {22let rem = n - 1;2324let sum = 0;25let prod = 1;2627for (const child of adj[node]) {28const count = dfs(child);2930sum += count;31prod *= count;32rem -= count;33}3435if (rem > 0) prod *= rem;3637if (prod > maxProd) {38maxProd = prod;39maxCount = 1;40} else if (prod === maxProd) {41++maxCount;42}4344return sum + 1;45}46};