news 2026/5/13 23:13:43

【剑斩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/10 2:59:21

西哲对儒家的主流解读

西方哲学对儒家思想的解读是一个复杂且多元的领域&#xff0c;不同流派和哲学家基于自身理论框架对儒家进行了各具特色的阐释。以下是一些主流的解读视角和代表性观点&#xff1a; 启蒙运动时期的理性化解读 代表人物&#xff1a;莱布尼茨、伏尔泰、沃尔夫 核心观点&#xff1a…

作者头像 李华
网站建设 2026/5/9 20:07:53

短视频缺音效?2026年免费音效素材网站推荐榜单 自媒体/影视后期/游戏

一、引言&#xff1a;免费音效素材需求激增&#xff0c;品质与版权成关键痛点据中国音像与数字出版协会2025年《数字音效素材行业发展报告》显示&#xff0c;国内自媒体创作、影视后期制作、游戏开发等领域对免费音效素材的年需求量达48亿次&#xff0c;较上年增长51%。但行业调…

作者头像 李华
网站建设 2026/5/9 18:33:24

django-flask基于python的高中信息技术在线学习网站的设计与实现

目录摘要关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;摘要 随着信息技术的快速发展&#xff0c;在线学习平台逐渐成为教育领域的重要组成部分。本研究基于Python语言&#xff0c…

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

12. CPU → GPU数据上传 + 渲染指令执行流程

1.CPU → GPU数据上传 渲染指令执行流程 2.绑定GPU显存中的VBO/IBO说明1.CPU → GPU数据上传 渲染指令执行流程 以渲染一个3D对象为例, 全流程如下1).CPU准备阶段a.CPU在内存中整理好顶点数据、索引数据、常量缓冲区参数(比如 MVP 矩阵)b.CPU确定本次渲染的渲染状态(深度测试…

作者头像 李华
网站建设 2026/5/12 8:55:25

AI应用架构师打造的AI驱动虚拟旅游,树立行业标杆

从0到1构建AI驱动的虚拟旅游应用:AI应用架构师的实战指南 摘要/引言 问题陈述 随着人们对旅游体验多样化需求的增长,传统的实体旅游受到时间、空间以及各种现实因素的限制。如何突破这些限制,为用户提供沉浸式、个性化且不受地理和时间约束的旅游体验,成为旅游行业亟待解…

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

Open Code教程(四)| 高级配置与集成

Open Code教程&#xff08;四&#xff09;| 高级配置与集成OpenCode 高级配置与集成一、前言二、本地模型配置方式一&#xff1a;Ollama&#xff08;推荐&#xff09;方式二&#xff1a;LM Studio方式三&#xff1a;llama.cpp本地模型推荐三、AGENTS.md 配置创建方式推荐结构高…

作者头像 李华