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
LeetCode 662. 二叉树最大宽度(递归)相关推荐
- 41. Leetcode 662. 二叉树最大宽度 (二叉树-二叉树性质)
给定一个二叉树,编写一个函数来获取这个树的最大宽度.树的宽度是所有层中的最大宽度.这个二叉树与满二叉树(full binary tree)结构相同,但一些节点为空.每一层的宽度被定义为两个端点(该层最 ...
- LeetCode 662 二叉树最大宽度
原题链接 标签 :二叉树 BFS 解题思路:BFS广度优先 + 队列 /*** Definition for a binary tree node.* struct TreeNode {* int v ...
- 662. 二叉树最大宽度 golang
662. 二叉树最大宽度 给定一个二叉树,编写一个函数来获取这个树的最大宽度.树的宽度是所有层中的最大宽度.这个二叉树与满二叉树(full binary tree)结构相同,但一些节点为空. 每一层的 ...
- 662. 二叉树最大宽度
662. 二叉树最大宽度 给定一个二叉树,编写一个函数来获取这个树的最大宽度.树的宽度是所有层中的最大宽度.这个二叉树与满二叉树(full binary tree)结构相同,但一些节点为空. 每一层的 ...
- leetcode 662. Maximum Width of Binary Tree | 662. 二叉树最大宽度(BFS)
题目 https://leetcode.com/problems/maximum-width-of-binary-tree/ 题解 本题思路来源于二叉树的层序遍历. 层序遍历类似问题:leetcode ...
- LeetCode 814. 二叉树剪枝(递归)
文章目录 1. 题目 2. 递归解题 1. 题目 给定二叉树根结点 root ,此外树的每个结点的值要么是 0,要么是 1. 返回移除了所有不包含 1 的子树的原二叉树. 把只包含0的子树删除(断开) ...
- LeetCode:二叉树的非递归中序遍历
第一次动手写二叉树的,有点小激动,64行的if花了点时间,上传leetcode一次点亮~~~ 1 /* inorder traversal binary tree */ 2 #include < ...
- leetcode 662.二叉树最大深度 Java
二叉树最大深度 题目链接 描述 示例 初始代码模板 模板 题目链接 https://leetcode-cn.com/problems/maximum-width-of-binary-tree/ 描述 ...
- LeetCode 104.二叉树的最大深度(递归)
题目描述 给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,20,null,null,1 ...
最新文章
- SVN学习总结(2)——SVN冲突解决
- python 数据的读取
- Redis Info详解
- 博客统计:腾讯分析这些数据哪儿来的?
- SAP UI5 如何通过 manifest.json 文件定义第三方库依赖关系
- 用fft对信号进行频谱分析实验报告_示波器上的频域分析利器,Spectrum View测试分析...
- 计算机网络第5章(传输层)
- mysql函数lead用指定的字符串实现左填充指定长度
- linux显示fio为非法指令,FORTRAN运行错误消息列表中英对照.doc
- 【渝粤教育】电大中专学习指南 (3)作业 题库
- Linux 5.7 将支持国产 RISC-V 芯片 K210
- 诺禾致源css客户端,诺禾,诺禾致源:CSS 基础教学
- 微型计算机原理IMUL指令,微机原理与系统设计实验
- matlab 傅里叶变换频谱
- 0基础学SQL(二)
- 北京内推 | 秘塔科技招聘NLP算法工程师(社招校招可转正实习)
- 一文详解synchronized与volatile
- 覆盖网络(Overlay Network)
- ufvm可以读哪些网格_FM24C05UFVM8
- 计算机年龄测试题,我的世界:五道测试题,看看你游戏时间是否和MC年龄相当...