515. Find Largest Element in Each Row

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;    
    }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值