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]
You need to find the largest value in each row of a binary tree.
解:BFS
每次遍历一层,找出最大的数.
vector<int> findValueMostElement(TreeNode* root) {//findValueMostElement
vector<int> ans;
queue<TreeNode*> q1,q2;
if(!root)
return ans;
q1.push(root);
int max1,max2;
max1=max2=INT_MIN;
bool f1,f2;
while(!q1.empty()||!q2.empty())
{
while(q1.size()>0)
{
f1=1;
TreeNode* tmp=q1.front();
max1=max(max1,tmp->val);
q1.pop();
if(tmp->left)
q2.push(tmp->left);
if(tmp->right)
q2.push(tmp->right);
}
if(f1)
{ans.push_back(max1); max1=INT_MIN;f1=0;}
while(q2.size()>0)
{
f2=1;
TreeNode* tmp=q2.front();
max2=max(max2,tmp->val);
q2.pop();
if(tmp->left)
q1.push(tmp->left);
if(tmp->right)
q1.push(tmp->right);
}
if(f2)
{ans.push_back(max2); max2=INT_MIN;f2=0;}
}
return ans;
}