当前位置:网站首页>【力扣】662. 二叉树最大宽度
【力扣】662. 二叉树最大宽度
2022-08-09 14:58:00 【漆黑丶】
题目:
给定一个二叉树,编写一个函数来获取这个树的最大宽度。树的宽度是所有层中的最大宽度。这个二叉树与满二叉树(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位有符号整数的表示范围内。
答案:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */
class Solution {
public int widthOfBinaryTree(TreeNode root) {
//使用两个队列分别存放节点和节点对应的索引(索引是完全二叉树下对应的下标)
if(root == null) return 0;
if(root.left == null && root.right == null) return 1;
Queue<TreeNode> q1 = new LinkedList<>();
Queue<Integer> q2 = new LinkedList<>();
q1.offer(root);
q2.offer(1);
int max = 0;
while(!q1.isEmpty()){
int size = q1.size();
int left = 0, right = 0;
boolean flag = false;
while(size-- > 0){
TreeNode node = q1.poll();
int index = q2.poll();
if(flag == false){
flag = true;
left = index;
}
right = index;
max = Math.max(max, right - left + 1);
if(node.left != null){
q1.offer(node.left);
q2.offer(index * 2);
}
if(node.right != null){
q1.offer(node.right);
q2.offer(index * 2 + 1);
}
}
}
return max;
}
}
边栏推荐
猜你喜欢
随机推荐
深度神经网络中的多任务学习研究综述
hugging face tutorial - Chinese translation - fine-tuning a pre-trained model
Vitis部分实验记录
AlexNet pytorch实现
基于MTCNN和FaceNet的实时人脸检测识别系统
【工具使用】Keil5软件使用-进阶工程配置篇
【Postgraduate Work Weekly】(Week 12)
pyspark.sql之实现collect_list的排序
抱抱脸(hugging face)教程-中文翻译-基于pipeline的推理
[Deep Learning] Original Problem and Dual Problem (6)
微信小程序封装api
如何在实际操作中进行亚马逊测评
研究生工作周报
Why learn the principles of compiling
flask局域网访问失败解决方法(使用pycharm运行代码的一定要看)
配置 vscode 让它变得更好用
【深度学习】全面理解支持向量机SVM(七)
【深度学习】归一化(十一)
深入浅出最优化(5) 共轭梯度下降法
【研究生工作周报】(第十周)