目录
题目:
示例:
分析:
代码:
题目:
示例:
分析:
给我们一棵二叉树,让我们统计这棵二叉树中好节点的数目。
那么什么是好节点,题目中给出定义,从根节点到好节点中,没有一个节点的数值大于好节点的数值。
那么我们一样是递归这棵二叉树,只不过我们需要多携带一个参数,那就是沿途节点的最大值,每次遇到比沿途节点的最大值还大(或者是等于)的节点时,我们就可以认为当前这个节点就是好节点,然后我们将答案+1,并且更新沿途节点的最大值然后再接着遍历。
整棵二叉树递归遍历完毕之后我们就可以得到好节点的数目了。
代码:
class Solution {
public:
int res=0;
void digui(TreeNode* root,int Max){
if(root==nullptr) return;
if(root->val>=Max){
res++;
Max=max(Max,root->val);
}
digui(root->left,Max);
digui(root->right,Max);
}
int goodNodes(TreeNode* root) {
if(root==nullptr) return 0;
digui(root,root->val);
return res;
}
};