1448. 统计二叉树中好节点的数目

用时: 偷偷看了答案

本来把问题想复杂了,想着维护一个最大堆,从上往下传递然后每次判断是否大于最大值

看了答案后发现只需要传递一个max,判断是否比max大,然后从下到上获取左右节点的值,返回左右节点和 加自身是否符合就好了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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)
};