news 2026/4/16 13:15:04

【剑斩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/4/12 16:56:50

如何进行科学的分类

如何分类 对客观对象群体进行分类是科学研究和实际应用中的基础任务&#xff0c;其方法和原则需根据目标、数据特征及分类用途确定。以下是系统性的分类方法与原则总结&#xff1a; 一、分类的核心原则 明确分类目的 分类需服务于具体目标&#xff08;如科学研究、市场细分、资…

作者头像 李华
网站建设 2026/4/15 4:44:57

django-flask基于python的观赏鱼养殖互助商城系统的设计与实现

目录摘要关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;摘要 随着观赏鱼养殖行业的快速发展&#xff0c;养殖爱好者对专业化的信息交流与商品交易平台需求日益增长。基于Python的D…

作者头像 李华
网站建设 2026/3/31 3:37:57

大数据产品国际化:多语言数据处理的挑战与解决方案

大数据产品国际化&#xff1a;多语言数据处理的挑战与解决方案 一、引入与连接&#xff1a;当“苹果”不再是苹果 深夜11点&#xff0c;东南亚某电商公司的产品经理小李盯着电脑屏幕&#xff0c;额头上渗出细密的汗——上周刚上线的泰国站推荐系统出了大问题&#xff1a;明明用…

作者头像 李华
网站建设 2026/4/15 19:38:30

django-flask基于python的档案室管理系统

目录基于Python的档案室管理系统&#xff08;Django/Flask框架&#xff09;关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;基于Python的档案室管理系统&#xff08;Django/Flask框架…

作者头像 李华
网站建设 2026/4/2 4:44:16

选择敏捷咨询公司前,你一定要问的几个问题

企业做敏捷转型&#xff0c;最怕找错人、走弯路。市面上的敏捷咨询公司鱼龙混杂&#xff0c;有的主打低价培训&#xff0c;有的空谈理论框架&#xff0c;真正能帮企业解决实际问题的并不多。想要让敏捷转型真正落地见效&#xff0c;在合作前一定要问清楚以下几个关键问题&#…

作者头像 李华