1448.统计二叉树中好节点的数目
【LetMeFly】1448.统计二叉树中好节点的数目
力扣题目链接:https://leetcode.cn/problems/count-good-nodes-in-binary-tree/
给你一棵根为 root
的二叉树,请你返回二叉树中好节点的数目。
「好节点」X 定义为:从根到该节点 X 所经过的节点中,没有任何节点的值大于 X 的值。
示例 1:
输入:root = [3,1,4,3,null,1,5] 输出:4 解释:图中蓝色节点为好节点。 根节点 (3) 永远是个好节点。 节点 4 -> (3,4) 是路径中的最大值。 节点 5 -> (3,4,5) 是路径中的最大值。 节点 3 -> (3,1,3) 是路径中的最大值。
示例 2:
输入:root = [3,3,null,4,2] 输出:3 解释:节点 2 -> (3, 3, 2) 不是好节点,因为 "3" 比它大。
示例 3:
输入:root = [1] 输出:1 解释:根节点是好节点。
提示:
- 二叉树中节点数目范围是
[1, 10^5]
。 - 每个节点权值的范围是
[-10^4, 10^4]
。
方法一:深度优先搜索(DFS)
给当前函数goodNodes
添加一个默认值为“无穷小”的参数parentMax
,用来记录当前节点的祖先节点中的最大值。
如果root
为空,则返回0;
否则,更新parentMax
为祖先节点和当前节点的最大值,并递归左右子即可。
- 时间复杂度$O(n)$,其中$n$是二叉树的最大深度
- 空间复杂度$O(n)$
AC代码
C++
1 |
|
Python
1 |
|
同步发文于CSDN,原创不易,转载经作者同意后请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/132491754
1448.统计二叉树中好节点的数目
https://blog.letmefly.xyz/2023/08/25/LeetCode 1448.统计二叉树中好节点的数目/