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

搜狗整站优化网页优化方案

搜狗整站优化,网页优化方案,镇江vi设计,网页在线代理服务器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/368605.html

相关文章:

  • 怎么给网站做超链接推广代理平台
  • 个性化网站建设开发seo网络推广经理
  • 优秀的移动端网站信息流推广方式
  • photoshop怎么修改图片上的文字seo网站优化推广怎么样
  • 网站开发计划甘特图线上销售方案
  • 动画制作软件推荐百度seo关键词排名
  • 泰州网站建设与网页制作中国十大广告公司排行榜
  • 网站代码用什么打开链接生成二维码
  • 视频直播系统开发网站建设重庆seo排名优化
  • 湖北省网站备案搜索关键词排行榜
  • 网页做二维码哪个网站好亚马逊关键词排名提升
  • 男人和男人做爰漫画网站谷歌seo关键词排名优化
  • cnzz网站建设教学网站seo链接购买
  • 国外做饮料视频网站企业网站分析报告
  • 简洁印象wordpress企业主题东莞百度推广优化排名
  • 深圳住房和建设管理局官方网站平台推广引流
  • 龙里县建设局管方网站网络营销外包网络推广
  • 网站制作 江西云优化
  • 网站制作乌鲁木齐长春网站建设模板
  • 如何建造免费的网站google中文搜索引擎
  • 自个做网站教程百度热搜榜
  • 做常识的网站接单平台
  • 西安做网站的公司有seo黑帽培训
  • outline免费服务器上海搜索引擎优化公司排名
  • 网站子页面如何做seoseo工资多少
  • 网页制作网站源码免费游戏推广平台
  • 用dedecms 做门户网站太原做推广营销
  • 网站如何增加增删查改怎么做百度提交收录入口
  • 网站开发能用到的ps知识旅游企业seo官网分析报告
  • 专业网站建设推广阿里云自助建站