news 2026/6/9 22:48:54

【剑斩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/6/10 12:34:30

机器学习--矿物数据清洗(六种填充方法)

1、数据清洗指发现并纠正文件中可识别的错误的最后一道程序&#xff0c;包括检查数据一致性&#xff0c;处理无效值和缺失值&#xff0c;以确保数据的准确性和可靠性目的&#xff1a;删除重复信息、纠正存在的错误&#xff0c;并提供数据一致性2.步骤1&#xff09;完整性&#…

作者头像 李华
网站建设 2026/6/10 12:38:38

NPP 草原:南非图文巴,1949-1990 年,R1

NPP Grassland: Towoomba, South Africa, 1949-1990, R1 简介 本数据集包含七个文本格式 (.txt) 的数据文件。这些文件提供了在南非图文巴人工建立的草原稀树草原研究地点进行的生物量估算、土壤碳 (C)、氮 (N) 和磷 (P) 测量数据。该研究地点是长期施肥试验的一部分&#xf…

作者头像 李华
网站建设 2026/6/10 14:26:38

Windows Server 2016 中文版、英文版下载 (2026 年 1 月更新)

Windows Server 2016 中文版、英文版下载 (2026 年 1 月更新) Windows Server 2016 x64 Version 1607 (updated Jan 2026) 请访问原文链接&#xff1a;https://sysin.org/blog/windows-server-2016/ 查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;…

作者头像 李华
网站建设 2026/6/10 13:14:37

BMP280气压传感器原理图设计,已量产(压力传感器)

目录 1、电源系统:低噪声是精准感知的基础 2、BMP280 核心电路:不拖传感器性能的后腿 3、电平转换:5V/3.3V 主控的兼容关键 4、硬件兼容性:不用跳线的 “傻瓜式” 适配 做嵌入式项目时,“小而精” 的传感器模块永远是刚需 —— 尤其是需要同时测气压和温度的场景,比如…

作者头像 李华