当前位置: 首页 > news >正文

仿模板电影网站专做实习生招聘的网站

仿模板电影网站,专做实习生招聘的网站,建设食品网站如何定位,阿里云域名注册官网入口这篇博客是关于队列宽搜的几道题&#xff0c;主要包括N叉树的层序遍历、二叉树的锯齿形层序遍历、二叉树最大宽度、在每个数行中找最大值。 class Solution { public:vector<vector<int>> levelOrder(Node* root) {vector<vector<int>> ret;if(!root) …

这篇博客是关于队列+宽搜的几道题,主要包括N叉树的层序遍历、二叉树的锯齿形层序遍历、二叉树最大宽度、在每个数行中找最大值。

class Solution {
public:vector<vector<int>> levelOrder(Node* root) {vector<vector<int>> ret;if(!root) return ret;queue<Node*> q;q.push(root);while(q.size()){int num = q.size();  //先求出本层的元素个数vector<int> tmp;  //统计本层的节点while(num--){Node* top = q.front();q.pop();tmp.push_back(top->val);for(auto e : top->children){if(e != nullptr)q.push(e);}}ret.push_back(tmp);}return ret;}
};

题目分析:这道题我们需要层序遍历,需要借助一个队列实现,首先将第一层节点放进队列,然后出队列,在出队列后,把它的孩子节点都push到队列中,再依次把这几个孩子节点出队列,每一个节点出队列后,都要马上把它的孩子节点push到队列。为了知道每层有几个节点,在每一层出队列前,需要统计队列里的元素个数。

 

class Solution {
public:vector<vector<int>> zigzagLevelOrder(TreeNode* root) {vector<vector<int>> ret;if(!root) return ret;queue<TreeNode*> q;q.push(root);int flag = 1;while(q.size()){int sz = q.size();vector<int> tmp;for(int i = 0 ; i < sz ; i++){TreeNode* top = q.front();q.pop();tmp.push_back(top->val);if(top->left) q.push(top->left);if(top->right) q.push(top->right);}if(flag % 2 == 0){reverse(tmp.begin(), tmp.end());}ret.push_back(tmp);flag++;}return ret;}
};

题目分析:仍然是使用队列来存放节点,和上一题不同的是,在得到偶数层的队列后,需要将其逆序一下,可以通过创建一个变量来判断奇偶层。

class Solution {
public:int widthOfBinaryTree(TreeNode* root) {vector<pair<TreeNode*,unsigned int>> queue;unsigned int ret = 0;queue.push_back({root, 1});while(queue.size()){auto& [x1, y1] = queue[0];auto& [x2, y2] = queue.back();ret = max(ret, y2 - y1 + 1);vector<pair<TreeNode*,unsigned int>> tmp;for(auto& [x, y] : queue){if(x->left) tmp.push_back({x->left, 2*y});if(x->right) tmp.push_back({x->right, 2*y + 1}); }queue = tmp;} return ret;}
};

题目分析:这道题我们可以使用数组存储二叉树的方式,给节点编号,数组的类型为pair<TreeNode*,int>,int为这个节点的编号,一层的两端节点编号相减+1就是这层的宽度。

需要注意的是,下标可能溢出,所以不能用int存储节点编号,而是用unsigned int 存储。

class Solution {
public:vector<int> largestValues(TreeNode* root) {queue<TreeNode*> q;vector<int> ret;if(!root) return ret;q.push(root);// ret.push_back(root->val);while(q.size()){int size = q.size();int m = INT_MIN;while(size--){TreeNode* top = q.front();q.pop();m = max(m, top->val);if(top->left) q.push(top->left);if(top->right) q.push(top->right);}ret.push_back(m);}return ret;}
};

题目分析:很简单,利用层序遍历,统计每一层的最大值。

http://www.yayakq.cn/news/263225/

相关文章:

  • 学网站开发需要学那些辽宁建设工程信息网停用
  • 网站关键词搜索优化怎么做微信小程序开发免费模板
  • 网站链接做投票wordpress分类目录路径
  • 织梦商城网站重庆商家网站
  • 网络建站公司源码中企动力邮箱手机登录设置
  • 做网站需要跟客户了解什么软件品牌设计公司起名
  • 十堰市建设网站的公司做类似58同城大型网站
  • 学网站建设与管理好吗临时手机号注册网站
  • 网站恶意攻击百度平台营销
  • 免费的在线学习网站做医疗网站
  • 做网站的软件叫什么金华网站建设luopan
  • 12数据网站建设保定市建设计网站
  • 做慧聪网站多少钱伙购网官方网站
  • ie 10 常用网站电子商务网站seo
  • wordpress分站点windows优化大师官方免费
  • 自己做的网站突然打不开做网站 如何注册公司
  • 工具网站有哪些贵阳网站页面设计
  • dede 网站目录设计网站公司有哪些
  • dede减肥网站源码餐饮网站建设
  • 山东建设工程信息网站外贸公司怎么找客户的
  • 运营实力 网站建设信誉好的手机网站建设
  • 网站开发完整项目平台网站开发wordpress google字体插件
  • 泰州网站制作软件广州seo网站优化培训
  • 深圳营销型网站费用wordpress wp rss
  • asp网站显示空白免备案域名是危险网站
  • 网站的后缀名怎么建设中国建筑集团有限公司待遇
  • 江苏省城乡建设官网站网页设计培训推荐
  • 网站会员系统模板虹口房产网站建设
  • 华为建站模板怎么自己做网站空间
  • 建材网站免费模板wordpress通过标签调用文章