题目链接:1161. Maximum Level Sum of a Binary Tree
题目大意:给你一棵树,问树的哪一层的结点权值之和最大
题目思路:水题,直接爆搜即可,BFS,DFS均可
时间复杂度&&空间复杂度:O(n)&&O(n)(n为节点个数)
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int ans[10005],maxceng = 1,maxx = -1e9-7,res = 1;
void dfs(TreeNode* root,int ceng){
ans[ceng] += root->val;
maxceng = max(ceng,maxceng);
if(root->left != NULL)dfs(root->left,ceng+1);
if(root->right != NULL)dfs(root->right,ceng+1);
}
int maxLevelSum(TreeNode* root) {
ans[1] += root->val;
if(root->left != NULL)dfs(root->left,2);
if(root->right != NULL)dfs(root->right,2);
for(int i = 1;i <= maxceng;i++){
if(ans[i] > maxx) maxx = ans[i],res = i;
}
return res;
}
};