思路:
变量level标识节点的深度(假设从0开始),vector<int> res存放结果,Fun函数遍历整个树,当遍历到第i层时,如果
res的长度小于i+1,则将该节点的数据加入res中,如果res长度大于等于i+1,则将该节点的数据与res[i]进行比较,如果
大于res[i],则替换,这样保证res[i]最终存放的是i层最大的数
void Fun(int level, vector<int>& res, TreeNode* node)
{
if (node==NULL)
return;
if (res.size()<level+1)
res.push_back(node->val);
else if (res[level]<node->val)
res[level]=node->val;
Fun(level+1,res,node->left);
Fun(level+1,res,node->right);
}
vector<int> largestValues(TreeNode* root) {
vector<int> res;
Fun(0,res,root);
return res;
}
二叉树最大值层级遍历
本文介绍了一种通过递归方式实现的算法,该算法可以找出二叉树每一层的最大值。通过使用层级遍历的方法,并维护一个动态更新的数组来记录每层的最大值,确保了算法的有效性和正确性。
1877

被折叠的 条评论
为什么被折叠?



