算法思路
该题是一道二叉树层次遍历的应用,题目要求求出二叉树中每一行的最大值,于是想到利用层次遍历的模板,可参见LeetCode 102. 二叉树的层序遍历
在遍历每一层时,记录每一层的最大值,在每一层遍历结束时,将原本层次遍历时插入的每层遍历数组替换为每层最大值即可。
C ++代码
/**
* 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:
vector<int> largestValues(TreeNode* root) {
vector<int> res;
if (!root) return res;
queue<TreeNode*> q;
q.push(root);
while (q.size())
{
int n = q.size();
int maxv = INT_MIN;
for (int i = 0; i < n; i ++)
{
auto t = q.front();
q.pop();
maxv = max(maxv, t -> val);
if (t -> left) q.push(t -> left);
if (t -> right) q.push(t -> right);
}
res.push_back(maxv);
}
return res;
}
};
想问一下,大佬做这么多题,会不会经常遗忘啊,我前学后忘,
来了两个月就把提高,基础,算法指南全写完了,要向大佬学习,respect
(小声说)这也就是我开始学算法的时间,因为疫情原因开不了学,偶遇AcWing,就天天看y总录像,然后…就看上瘾了hhhh,其实有好多都是跟着把代码打了一边,之后还要慢慢啃,一起加油!!!y总nb!!!
今天一直看你刷题,太巨了,orz
其实是之前就做了的,然后强迫症的我今天想着就把几个相同名字系列的题目题解一起写了hhhh