leetcode1161最大层内元素之和
- 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;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界