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

制作网页教程的软件网站seo专员招聘

制作网页教程的软件,网站seo专员招聘,网站换域名影响吗,短视频app软件下载大全662. 二叉树最大宽度 给你一棵二叉树的根节点 root ,返回树的 最大宽度 。 树的 最大宽度 是所有层中最大的 宽度 。 每一层的 宽度 被定义为该层最左和最右的非空节点(即,两个端点)之间的长度。将这个二叉树视作与满二叉树结构相…

662. 二叉树最大宽度

给你一棵二叉树的根节点 root ,返回树的 最大宽度

树的 最大宽度 是所有层中最大的 宽度

每一层的 宽度 被定义为该层最左和最右的非空节点(即,两个端点)之间的长度。将这个二叉树视作与满二叉树结构相同,两端点间会出现一些延伸到这一层的 null 节点,这些 null 节点也计入长度。

题目数据保证答案将会在  32 位 带符号整数范围内。

示例 1:

输入:root = [1,3,2,5,3,null,9]
输出:4
解释:最大宽度出现在树的第 3 层,宽度为 4 (5,3,null,9) 。

示例 2:

输入:root = [1,3,2,5,null,null,9,6,null,7]
输出:7
解释:最大宽度出现在树的第 4 层,宽度为 7 (6,null,null,null,null,null,7) 。

示例 3:

输入:root = [1,3,2,5]
输出:2
解释:最大宽度出现在树的第 2 层,宽度为 2 (3,2) 。

 最初版本,没有理解题意,直接使用队列计算每行最多的元素,也就是每层最多多少个结点。

class Solution {
public:int widthOfBinaryTree(TreeNode* root) {int maxwid = 0;queue<TreeNode*> q;if(root)q.push(root);while(!q.empty()){int size = q.size();maxwid = max(size, maxwid);while(size--){TreeNode* cur = q.front();q.pop();if(cur->left)q.push(cur->left);if(cur->right)q.push(cur->right);}}return maxwid;}
};

实际上是有问题的,这道题是包含了以下这些红色空节点在内的。从 6 到 7 加上中间空节点来计算这个二叉树最大的宽度。

思路一:插入空节点

仍旧使用上述的代码,只是在判断左右孩子是否存在时,再为空的情况下做一个插入一个空节点这样的方式来进行。每访问一层的时候使用empty变量来记录当前层空节点个数,以此来计算最大宽度,不过出现右边这个图的情况下就会溢出。

思路二:利用数组存储二叉树的方式,给节点进行编号

使用数组存储二叉树的方式,给结点进行编号(联想完全二叉树、堆使用数组来进行下标访问),如果有下标的情况下,那么求第四层的宽度就可以直接使用 15-8+1   第三层:7-4+1  m-n+1

 队列中存放结点为一个键值对pair类型,first为二叉树结点指针,second为二叉树数组顺序下标。


class Solution {
public:int widthOfBinaryTree(TreeNode* root) {queue<pair<TreeNode*, unsigned int>> q;由于数字溢出使用 unsigned int 类型unsigned int maxwid = 0;if(root)q.push(pair(root, 1));while(!q.empty()){1、确定队头队尾之间的宽度并更新maxwidauto fro = q.front();auto bac = q.back();maxwid = max(maxwid, bac.second - fro.second + 1);2、一层一层的进行插入队列int size = q.size();while(size--){auto cur = q.front();q.pop();if(cur.first->left)q.push(pair(cur.first->left, 2 * cur.second));if(cur.first->right)q.push(pair(cur.first->right, 2 * cur.second + 1));}}return maxwid;}
};

总结:这道题算是熟练掌握auto、pair键值对中对于first、second的访问与运算、无符号整形来控制溢出、队列、二叉树顺序存储,很不错挺综合的一道题目。有种考研后期刷线代、高数综合大题的感觉了

http://www.dtcms.com/wzjs/122232.html

相关文章:

  • 做外包的网站东莞关键词排名优化
  • 天津网站制作重点乐天seo视频教程
  • 中国公司网搜索引擎优化seo怎么做
  • 网站服务器托管口碑营销案例及分析
  • 县政府门户网站建设方案seo推广公司有哪些
  • 白云区专业网站建设免费推广软件下载
  • 车网站建设策划产品推广平台排行榜
  • 微网站 注册百度关键词seo排名软件
  • 排名好的手机网站建设济南百度竞价代运营
  • 广州响应式网站咨询常德网站设计
  • 网站建设后台小程序怎么引流推广
  • 上海松江网站设计公司网站友情链接是什么
  • 图文可以做网站设计吗免费发外链平台
  • 公司网站模板发外链比较好的平台
  • ibm cloud wordpresswindows优化大师是什么
  • wordpress技术博客模板下载湖南竞价优化哪家好
  • 网站前端用什么做网站源码交易平台
  • 网站做代练百度知道网页版入口
  • 做网站做app什么专业网站如何被百度快速收录
  • 免费源码下载优化seo深圳
  • 做网站的群网络营销策划案
  • php 网站共享变量com天堂网
  • 做网站用什么框架最方便全国疫情高峰感染进度查询
  • 嘉兴本地推广网站拼多多女装关键词排名
  • 现在哪个招聘网站做的比较好互联网推广渠道有哪些
  • 网站的栏目关键词百度热搜关键词排名
  • dw做网站步骤人脉推广app
  • ui网页设计报价优化设计五年级下册语文答案
  • 政府 网站模板大数据营销
  • 海事网站服务平台百度seo算法