Leetcode / C++ / 515. Find Largest Value in Each Tree Row 结题报告+源代码

来源:互联网 发布:知乎日本反战同盟 编辑:程序博客网 时间:2024/06/11 10:51



思路:

典型的【广度优先搜索 BFS】。用一个queue实现,每次用curLen记录当前层的节点个数,然后依次取出,维护一个最大值,同时将此节点左右子节点也存到queue末尾。直到一层所有节点全部计数完毕,然后存到vector中,再进行下一层的统计。



AC代码:

/** * 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.empty()){            int curMax = INT_MIN;            const int curLen = q.size();//局部const变量,在下一轮就会被更新            for(int i = 0; i < curLen; ++i){                TreeNode* cur = q.front();                curMax = max(curMax, cur->val);                if(cur->left) q.push(cur->left);                if(cur->right) q.push(cur->right);                q.pop();//std::queue 只负责管理和使用,不负责成员内存释放,所以可以pop之后还使用front的那个指针。不过为了不混和易于理解淆,此处最后再pop。            }            res.push_back(curMax);        }                return res;    }};


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 方舟手游飞龙驯服时间不够怎么办 淘宝上买了假货找不到商家怎么办 魅蓝手机一直在开机画面怎么办 在实体店买的手机想退怎么办 淘宝买了东西发货了不想要了怎么办 快递已经发货了不想要了怎么办 锤子手机买了不到十天碎屏了怎么办 唯品会新人专享优惠卷过期了怎么办 我微信被系统说赌博登陆不起怎么办 平湖新居民积分卡怎么办办好办吗 电话卡插上去只能打紧急电话怎么办 不小心充错q币了怎么办 液相色谱柱堵了怎么办处理柱子 扣扣空间宠物消消87关怎么办 微信钱包里的钱忘记密码了怎么办 支付宝绑定银行卡要验证码怎么办 微信红包超出20万限额怎么办 微信充电信的号码话费没到账怎么办 农业银行手机银行转账转错了怎么办 微信钱包里的零钱不见了怎么办 买家说支付宝没钱要微信付钱怎么办 微信红包没绑卡密码忘了怎么办 手机微信红包密码忘了怎么办 qq账号忘了怎么办什么也没绑定 手机银行转账名字对卡号错了怎么办 手机夸行转账卡号输入错了怎么办 移动开通了20元流量卡怎么办? 联通手机充值卡网上充值话费怎么办 提现金额和实际到账不一样怎么办 二冲踏板冷车加油熄火怎么办? qq被盗绑定了别人的银行卡怎么办 如何更改微信支付密码忘记了怎么办 微信钱包没绑银行卡忘记密码怎么办 微信密码忘记了也没绑银行卡怎么办 微信支付密码忘记了没银行卡怎么办 想找回原来的k歌忘了密码怎么办 手机微信钱包支付密码忘了怎么办 微信支付账户被注销了怎么办 微信钱包密码忘了怎么办没绑银行卡 微信钱包密码忘了怎么办不用银行卡 企业网银密码输入三次错误怎么办