[LeetCode]662. Maximum Width of Binary Tree判断树的宽度
2024-10-18 20:03:05
public int widthOfBinaryTree(TreeNode root) {
/*
层序遍历+记录完全二叉树的坐标,左孩子2*i,右孩子2*i+1
而且要有两个变量,一个记录本层节点数,一个记录下层节点数
层序遍历用队列实现
还要有一个队列记录本层的下标
*/
//层序遍历记录节点
Queue<TreeNode> tree = new LinkedList<>();
//记录每个节点的位置,用来判断此节点的孩子的坐标
Queue<Integer> index = new LinkedList<>();
//当前层数量和下一层数量
int cur = 1;
int next = 0;
//本层开始坐标和结束坐标
int sta = 1;
int end = 1;
//记录结果
int res = 0;
tree.offer(root);
index.offer(1);
while (!tree.isEmpty())
{
//当前节点和坐标
TreeNode curTree = tree.poll();
end = index.poll();
//添加左子树和坐标
if (curTree.left!=null)
{
tree.offer(curTree.left);
next++;
index.offer(end*2);
}
//添加右子树和坐标
if (curTree.right!=null)
{
tree.offer(curTree.right);
next++;
index.offer(end*2+1);
}
//本层待遍历节点数-1
cur--;
//本层遍历完毕,更新结果和下一层数据
if (cur==0)
{
res = Math.max(res,end-sta+1);
cur = next;
next = 0;
sta = index.isEmpty()?1:index.peek();
}
}
return res;
}
最新文章
- Web中的XHRHttpRequest
- 【Alpha版本】 第十天 11.18
- Yocto开发笔记之《根文件系统裁剪》(QQ交流群:519230208)
- LeetCode(6) - ZigZag Conversion
- Golang在视频直播平台的高性能实践
- java计算两个日期相差多少天
- css3绘制腾讯logo
- [刷题]算法竞赛入门经典(第2版) 4-6/UVa508 - Morse Mismatches
- java初步—参数的值传递
- python邮件SMTP的GUI编程
- js实现小球的弹性碰撞。
- android仿漫画源码、抽奖转盘、Google相册、动画源码等
- CSS弹性盒模型(flex box)
- loadrunner使用https请求
- easyui 进阶之表单校验、自定义校验
- 51nod1432贪心
- 实验源码,DES,AES,RSA,椭圆曲线
- FileFilter文件过滤器
- Android 开发服务类 05_ ApkPatchDemo
- 在IDEA里创建web项目,以及web 项目部署
热门文章
- [整理]qbxt集训10场考试 大 杂 烩 (后篇)
- Java支付项目实战教程,包括支付宝,微信等支付方式,不看亏!
- maven依赖问题的出现原因与解决方式
- 老猿学5G扫盲贴:PDU协议数据单元、PDU连接业务和PDU会话的功能详解
- 第八章、Designer组件属性编辑界面中QWidget类相关属性详解
- 从Linux源码看Socket(TCP)的accept
- 第 7篇 Scrum 冲刺博客
- 实现一个类型判断函数,需要鉴别出基本类型、function、null、NaN、数组、对象?
- 算法——最长上升子序列(DP和二分)
- spark中map和mapPartitions算子的区别