用时: 偷偷看了答案
本来把问题想复杂了,想着维护一个最大堆,从上往下传递然后每次判断是否大于最大值
看了答案后发现只需要传递一个max,判断是否比max大,然后从下到上获取左右节点的值,返回左右节点和 加自身是否符合就好了
var goodNodes = function(root,max = root.val) {
if (!root) return 0 var left = 0 max = Math.max(max,root.val)
if (root.left) {
left = goodNodes(root.left,max)
}
var right = 0 if (root.right) {
right = goodNodes(root.right,max)
}
console.log(left,right,root.val)
return (left + right) + (root.val >= max ? 1 : 0)
};