news 2026/5/15 11:21:05

【剑斩OFFER】算法的暴力美学——leetCode 662 题:二叉树最大宽度

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【剑斩OFFER】算法的暴力美学——leetCode 662 题:二叉树最大宽度

一、题目描述

二、算法原理

思路:使用队列实现层序遍历 + 让节点绑定一个下标 pair< TreeNode* , unsigned int>

例如:

计算左节点的下标的公式:父亲节点 * 2

计算右节点的下边的公式:父亲节点 * 2 + 1

第一层的宽度:1

第二层的宽度:3 - 2 + 1 = 2

第三层的宽度:6 - 4 + 1 = 3

故而最大的宽度位3

为什么使用 unsigned int 因为数值溢出了也不报错。

当使用 int 时,即使一个数溢出了:

此时这两个数其中一个溢出了,但是相减出来的值是正确的,不过这样编译器会报错,所以使用 unsigned int

三、代码实现

/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */ class Solution { public: int widthOfBinaryTree(TreeNode* root) { if(root == nullptr) return 0; queue<pair<TreeNode*,unsigned int>> que;//给每个节点绑定一个下标 que.push({root,1});//让 root 绑定 1 下标 unsigned int maxi = 0;//记录最大的宽度 while(!que.empty()) { int popnum = que.size(); unsigned int l = que.front().second;//左边的节点的下标 unsigned int r = 0; while(popnum--) { pair<TreeNode*,unsigned int> node = que.front(); que.pop(); unsigned int index = node.second; if(node.first->left != nullptr) { que.push({node.first->left,2 * index}); } if(node.first->right != nullptr) { que.push({node.first->right,2 * index + 1}); } if(popnum == 0) r = index;//最右节点的下标 } maxi = max(maxi, r - l + 1); } return maxi; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 9:23:24

西门子PLC的步进电机直接控制(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)

目 录 摘 要 III ABSTRACT IV 第一章 绪 论 1 1.1引言 1 第二章 方案论证比较设计 3 2.1PLC技术的发展概述 3 2.2PLC技术在步进电机控制中的发展状况 4 2.3步进电机的发展状况 5 2.4 步进电机的工作原理 7 2.5步进电机的控制和驱动方法简介 8 第三章 步进电机工作方式的…

作者头像 李华
网站建设 2026/5/15 9:02:29

数学错题整理(会更新的)

1.1 集合答案:B 错选:A 解析:易错点是③&#xff0c;这两个看似完全不相同的集合但实际上他们都满足x2≥0,x≥0x^2\geq0,\sqrt{x}\geq0x2≥0,x​≥0,所以本质上他们是一样的&#xff01;&#xff01;答案:错选:①② 解析:方程组的解是一个整体&#xff0c;不能这么表示

作者头像 李华
网站建设 2026/5/11 10:33:05

django基于python的社区老年人关爱服务系统的设计与实现

目录摘要关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;摘要 随着人口老龄化加剧&#xff0c;社区老年人关爱服务需求日益增长。传统服务模式存在效率低、资源分配不均等问题&…

作者头像 李华
网站建设 2026/5/7 6:51:34

django-flask基于python的大学生兼职网站的设计与实现

目录摘要关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;摘要 随着互联网技术的快速发展&#xff0c;在线兼职平台已成为大学生获取社会实践机会的重要渠道。本文基于Python技术栈&…

作者头像 李华
网站建设 2026/5/11 11:07:21

学霸同款9个AI论文软件,本科生轻松搞定毕业论文!

学霸同款9个AI论文软件&#xff0c;本科生轻松搞定毕业论文&#xff01; 1.「千笔」—— 一站式学术支持“专家”&#xff0c;从初稿到降重一步到位&#xff08;推荐指数&#xff1a;★★★★★&#xff09;对于本科生来说&#xff0c;论文写作不仅是对知识的综合运用&#xff…

作者头像 李华
网站建设 2026/5/15 9:32:54

槽型光电开关传感器原理图设计,已量产(光电传感器)

目录 1、光电检测前端:信号的 “源” 电路 2、信号缓冲:小器件解决电平与驱动问题 3、电路工作流程:从遮挡到信号输出 4、设计细节:避免踩坑的几个小技巧 在嵌入式设备的位置限位、物料计数等场景中,槽型光电开关是性价比极高的传感器方案 —— 它通过遮挡发射器与接收…

作者头像 李华