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

遍历二叉树即可

时间复杂度:O(n)
空间复杂度:O(1)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def __init__(self) -> None:
self.good_node_cnt = 0

def goodNodes(self, root: TreeNode) -> int:
self.good_node_cnt = 0
self.solve_good_node_cnt(root, float('-INF'))
return self.good_node_cnt

def solve_good_node_cnt(self, root, max_val):
if not root:
return

if root.val >= max_val:
self.good_node_cnt += 1
max_val = root.val

self.solve_good_node_cnt(root.left, max_val)
self.solve_good_node_cnt(root.right, max_val)