这题是今天第292场周赛的第二题
我就用一套小白解法来解题吧
我想的是用dfs,再写一个函数来检查一下是否为子树的平均值,如果是的话,就答案加一
上代码
class Solution {
public:
int ans = 0;
int sum = 0;
int temp = 0;
void checktree(TreeNode* root)
{
if(root == NULL) return;
sum = 0;
temp = 0;
dfs(root);
if (sum / temp == root->val)
{
ans ++;
}
checktree(root->left);
checktree(root->right);
}
void dfs(TreeNode* root)
{
if(root == NULL) return;
if(root != nullptr)
{
sum += root->val;
temp ++;
dfs(root->left);
dfs(root->right);
}
}
int averageOfSubtree(TreeNode* root)
{
checktree(root);
return ans;
}
};
用的全局变量temp,ans和sum
如果定义在函数里的话,很显然会报错的,我们check函数嵌套dfs,即可检测出答案,简单易懂。