LeetCode 662. 二叉树最大宽度(递归)

1. 题目

给定一个二叉树,编写一个函数来获取这个树的最大宽度。树的宽度是所有层中的最大宽度。这个二叉树与满二叉树(full binary tree)结构相同,但一些节点为空。

每一层的宽度被定义为两个端点(该层最左和最右的非空节点,两端点间的null节点也计入长度)之间的长度。

示例 1:
输入: 1/   \3     2/ \     \  5   3     9 
输出: 4
解释: 最大值出现在树的第 3 层,宽度为 4 (5,3,null,9)。示例 2:
输入: 1/  3    / \       5   3     
输出: 2
解释: 最大值出现在树的第 3 层,宽度为 2 (5,3)。示例 3:
输入: 1/ \3   2 /        5      
输出: 2
解释: 最大值出现在树的第 2 层,宽度为 2 (3,2)。示例 4:
输入: 1/ \3   2/     \  5       9 /         \6           7
输出: 8
解释: 最大值出现在树的第 4 层,
宽度为 8 (6,null,null,null,null,null,null,7)。
注意: 答案在32位有符号整数的表示范围内。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-width-of-binary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 记录深度,和每一层的最左侧节点位置(中序遍历每层第一次碰到的)
  • 节点位置用树的数组实现方式(注意溢出,每层pos*2很快就溢出了,用ulong能过)
class Solution {int ans;
public:int widthOfBinaryTree(TreeNode* root) {if(!root) return 0;vector<unsigned long> LeftPosOflv;ans = 1;dfs(root, 0, 0, LeftPosOflv);return ans;}void dfs(TreeNode* root, int depth, unsigned long pos, vector<unsigned long> &LeftPosOflv){if(!root) return;if(LeftPosOflv.size() <= depth)//第一次遇到的是该层最左边的LeftPosOflv.push_back(pos);ans = max(ans, int(pos-LeftPosOflv[depth]+1));dfs(root->left, depth+1, 2*pos+1, LeftPosOflv);dfs(root->right, depth+1, 2*pos+2, LeftPosOflv);}
};

12 ms 16.3 MB

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/475770.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

生物信息考研C语言,四川大学生物信息学初试经验分享

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼关于生物学(656)&#xff1a;我所用的教材是《陈阅增普通生物学》。以及陈增阅的普生的配套练习册。今年还加了两本参考书 动物生物学和植物生物学题型&#xff1a;1.选择(10个&#xff0c;每个2分) 2.判断(10个&#xff0c;每个2分…

LeetCode 474. 一和零(01背包动态规划)

1. 题目 在计算机界中&#xff0c;我们总是追求用有限的资源获取最大的收益。 现在&#xff0c;假设你分别支配着 m 个 0 和 n 个 1。另外&#xff0c;还有一个仅包含 0 和 1 字符串的数组。 你的任务是使用给定的 m 个 0 和 n 个 1 &#xff0c;找到能拼出存在于数组中的字…

LeetCode 452. 用最少数量的箭打破气球(贪心)

1. 题目 在二维空间中有许多球形的气球。对于每个气球&#xff0c;提供的输入是水平方向上&#xff0c;气球直径的开始和结束坐标。 由于它是水平的&#xff0c;所以y坐标并不重要&#xff0c;因此只要知道开始和结束的x坐标就足够了。 开始坐标总是小于结束坐标。平面内最多存…

android发展的外文文献综述,android文献综述总结.docx

android文献综述总结单位代码01  学号  分类号TP315  密级  文献综述  AJAXWeb应用程序开发技术的讨论  院名称  专业名称  学生姓名  指导教师  信息工程学院计算机科学与技术高博张亚娟  XX年2月21日  AJAXWeb应用程序开发技术的讨论  摘要  传统…

如何通过对方IP地址查对方的MAC

ping 对方IP 在用arp -a 查看机器上的arp缓存&#xff0c;其中一个是你自己机器的还有个就是那个IP的用ipconfig /all 查自己的MAC地址查同网段其他机器的nbtstat -A ip 或者 ping过的IP地址其主机nic的mac地址都会保存到arp缓存里面用arp -a就可以查看里面的内容。&#xff0…

Web 安全之文件下载漏洞详解

目录 引言 文件下载漏洞原理 文件下载漏洞的危害 文件下载漏洞类型 文件下载漏洞的利用方法 文件下载漏洞示例 文件下载漏洞的防护措施 漏洞检测与测试 小结 引言 在数字化时代&#xff0c;文件下载是网络应用程序的重要的功能之一&#xff0c;用户可以通过这一功能获…

android es管理工具,Android

Android ES文件管理器在文件管理器中&#xff0c;ES文件管理器的名气是比较大的&#xff0c;这款文件管理器也在近日进行了更新&#xff0c;更新后的ES文件管理器支持了更多网络存储空间&#xff0c;可以直接访问百度网盘、快盘、酷盘、微盘、box、sugarsync、dropbox和skydriv…

深入浅出InfoPath——让管理员来部署InfoPath表单

应用场景&#xff1a; 我们&#xff08;乙方&#xff09;在给客户提供基于InfoPath表单&#xff08;尤其是包含托管代码的&#xff09;的工作流解决方案的时候&#xff0c;常常需要客户&#xff08;甲方&#xff09;的SharePoint管理员来帮忙在安装SharePoint Server的服务器上…

LeetCode 932. 漂亮数组(分治递归/循环)

文章目录1. 题目2. 解题2.1 分治递归2.2 循环1. 题目 对于某些固定的 N&#xff0c;如果数组 A 是整数 1, 2, …, N 组成的排列&#xff0c;使得&#xff1a; 对于每个 i < j&#xff0c;都不存在 k 满足 i < k < j 使得 A[k] * 2 A[i] A[j]。 那么数组 A 是漂亮…

android 修改系统参数设置,2021-05-15 [RK3399][Android7.1] 调试笔记 ---显示参数动态设置接口...

系统环境&#xff1a;Platform: RK3399OS: Android 7.1Kernel: v4.4.83接口代码所在位置为&#xff1a;/frameworks/base/core/java/android/os/DisplayOutputManager.java如图&#xff1a;image.png1. 设置背光亮度public void setBrightness(int display, int brightness)设置…

Lucene.Net:关于索引的一些补充说明和总结

在前面的几篇关于lucene的文章中&#xff0c;我已经简要说明了如何利用lucene进行分词、索引和搜索。最近大部分时间耗在查资料上&#xff0c;看得比较多比较杂但是一贯的不够深入&#xff0c;还好多数都是不会影响编程实践的概念性的东西。有时候我自己也感觉到有心无力&#…

android wsdl封装,《android 解析WebService》

android端解析WebService我采用的是ksoap来完成的。ksoap相对来说也是比较简单的。代码如下package com.lv.test;import org.ksoap2.SoapEnvelope;import org.ksoap2.serialization.SoapObject;import org.ksoap2.serialization.SoapSerializationEnvelope;import org.ksoap2.t…

LeetCode 638. 大礼包(无限背包DP)

1. 题目 在LeetCode商店中&#xff0c; 有许多在售的物品。 然而&#xff0c;也有一些大礼包&#xff0c;每个大礼包以优惠的价格捆绑销售一组物品。 现给定每个物品的价格&#xff0c;每个大礼包包含物品的清单&#xff0c;以及待购物品清单。请输出确切完成待购清单的最低…

在2008 server安装vm server时发生的错误error1718、error1335……

;转载于:https://www.cnblogs.com/minglog/archive/2011/02/15/1955290.html

keepass2Android密码,Keepass2Android密码管理(快速解锁密码)

Keepass2Android密码管理能帮助我们保存各类网站、应用的密码&#xff0c;大家提前设置好之后每次输入密码的时候只需要输入很少的字符就能快速解锁密码&#xff0c;为大家的日常使用提供方便。软件特色* 几乎可与所有的Android 的浏览器结合使用 (见下文)*快速解锁&#xff1a…

LeetCode 845. 数组中的最长山脉(中心扩展)

1. 题目 我们把数组 A 中符合下列属性的任意连续子数组 B 称为 “山脉”&#xff1a; B.length > 3存在 0 < i < B.length - 1 使得 B[0] < B[1] < ... B[i-1] < B[i] > B[i1] > ... > B[B.length - 1] &#xff08;注意&#xff1a;B 可以是 A 的…

hibernate3.6.0日志配置

hibernate3 自带的默认的日志框架是slf4j&#xff0c;hibernate3的slf只是一个日志的接口&#xff0c;而hibernate3 自带默认的日志框架&#xff0c;在实际开发中很少有公司或者是项目中用到&#xff0c;这里记录一种使用log4j的日志框架来代替slf4j日志框架的实现&#xff0c;…

android stackview,Android StackView 使用示例

cell.xml 布局文件&#xff1a;xmlns:android"http://schemas.android.com/apk/res/android"android:id"id/cellImage"android:layout_width"200dp"android:layout_height"200dp"/>主布局文件&#xff1a;android:id"id/activ…

LeetCode 1239. 串联字符串的最大长度(回溯/动态规划)

文章目录1. 题目2. 解题2.1 回溯超时解2.2 回溯优化2.3 动态规划1. 题目 给定一个字符串数组 arr&#xff0c;字符串 s 是将 arr 某一子序列字符串连接所得的字符串&#xff0c;如果 s 中的每一个字符都只出现过一次&#xff0c;那么它就是一个可行解。 请返回所有可行解 s 中…

android 伪造gps位置,在Android中使用GPS的假位置

您正在开发一个将设置坐标(经度和纬度)的应用程序.它必须显示我的位置,因为我在那个坐标.它类似于位置欺骗者.. http://www.androidzoom.com/android_applications/tools/location-spoofer_gkmc.html但我没有这样做..这是我的代码..请任何人帮助我.public class Mock extends M…