1. 程式人生 > >515. Find Largest Value in Each Tree Row

515. Find Largest Value in Each Tree Row

else bsp vector () emp esc solution row treenode

You need to find the largest value in each row of a binary tree.

Example:

Input: 

          1
         /         3   2
       / \   \  
      5   3   9 

Output: [1, 3, 9]

/**
* 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) {
queue<TreeNode*>q;
vector<int>ret;
if(root==NULL)
return ret;
int maxi=INT_MIN;
q.push(root);
q.push(nullptr);
while(!q.empty())
{
TreeNode*t=q.front();
q.pop();
if(t==nullptr)
{
ret.push_back(maxi);
maxi=INT_MIN;
if(!q.empty())
q.push(nullptr);
}
else
{
maxi=max(maxi,t->val);
if(t->left)
q.push(t->left);
if(t->right)
q.push(t->right);
}
}
return ret;
}
};

/**
* 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>ret;
void helper(TreeNode*root,int cl)
{
if(root==NULL)
return;
if(ret.size()<cl+1)
ret.push_back(root->val);
else
{
if(ret[cl]<root->val)
ret[cl]=root->val;
}
helper(root->left,cl+1);
helper(root->right,cl+1);

}
vector<int> largestValues(TreeNode* root) {
if(root==NULL)
return ret;
helper(root,0);
return ret;
}
};

515. Find Largest Value in Each Tree Row