- dfs
lass Solution { public: unordered_map<int,vector<int>>m; void dfs(TreeNode* root,int depth){ if(!root)return; int res=0; depth++; dfs(root->left,depth); dfs(root->right,depth); res+=root->val; m[depth].push_back(res); } int maxLevelSum(TreeNode* root) { dfs(root,0); int depth=0; int ans=1<<31; for(const auto&v :m){ int size=v.second.size(); int res=0; for(int i=0;i<size;i++){ res+=v.second[i]; } if(res>ans){ ans=res; depth=v.first; } } return depth; } };
表示最小或最大值方法(以int四字节为例)
- MaxInt=(1<<31)-1;
- MinInt=1<<31;
queue入队时使用push();vector是使用push_back()
每层递归记录层号,要是第一次访问这个层就将数据放进每层的元素和中,不是第一次就加上这个元素得到新的层元素和。
vector<int>Sum;
void dfs(TreeNode* root,int depth){
if(!root)return;
if(depth==Sum.size()){
Sum.push_back(root->val);
}else{
Sum[depth]+=root->val;
}
dfs(root->left,depth+1);
dfs(root->right,depth+1);
}
int maxLevelSum(TreeNode* root){
dfs(root,0);
int ans=1<<31;
int depth=0;
for(int i=0;i<Sum.size();i++){
if(Sum[i]>ans){
ans=Sum[i];
depth=i+1;
}
}
return depth;
}
标签:层内,return,leetcode1161,元素,dfs,int,depth,ans,root From: https://www.cnblogs.com/wangkaixin-yy/p/17679670.html