问题描述:
你需要在二叉树的每一行中找到最大值,并将所有的最大值放在vector中作为返回值。
解题思路:
从根节点开始,依次将每一层的节点从左到右放入vector,current指向当前访问的节点,last指向当前层的最后一个节点。然后把每一层的所有节点值放入一个vector,访问当前层结束后,找出最大的元素放入result中。
源代码如下:
class Solution {
public:vector<int> largestValues(TreeNode* root) {
vector<int> result;
if(root!=NULL)
{
vector<TreeNode* > vec;
vec.push_back(root);
int current=0;
int last=1;
while(current<vec.size())
{
last=vec.size();
vector<int> vals;
for(;current<last;current++)
{
vals.push_back(vec[current]->val);
if(vec[current]->left!=NULL) vec.push_back(vec[current]->left);
if(vec[current]->right!=NULL) vec.push_back(vec[current]->right);
}
int max=vals[0];
for(int i=1;i<vals.size();i++)
{
if(vals[i]>max) max=vals[i];
}
result.push_back(max);
}
}
return result;
}
};
本文介绍了一种算法,用于遍历二叉树并找出每一层的最大值,最终将这些值存储在一个vector中返回。该算法使用了队列的思想,并通过迭代方式实现了对二叉树的层次遍历。
421

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



