博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode]662. Maximum Width of Binary Tree判断树的宽度
阅读量:5205 次
发布时间:2019-06-14

本文共 1413 字,大约阅读时间需要 4 分钟。

public int widthOfBinaryTree(TreeNode root) {        /*        层序遍历+记录完全二叉树的坐标,左孩子2*i,右孩子2*i+1        而且要有两个变量,一个记录本层节点数,一个记录下层节点数        层序遍历用队列实现        还要有一个队列记录本层的下标         */        //层序遍历记录节点        Queue
tree = new LinkedList<>(); //记录每个节点的位置,用来判断此节点的孩子的坐标 Queue
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; }

 

转载于:https://www.cnblogs.com/stAr-1/p/8413799.html

你可能感兴趣的文章
BZOJ 4052: [Cerc2013]Magical GCD
查看>>
libevent和libcurl的一些学习
查看>>
iOS的横屏(Landscape)与竖屏(Portrait)InterfaceOrientation
查看>>
JS中 window的用法
查看>>
Codeforces Round #361 (Div. 2)
查看>>
oauth2学习
查看>>
Python time & datetime & string 相互转换
查看>>
细说WebSocket - Node篇
查看>>
【pwnable.kr】 flag
查看>>
1014 装箱问题——http://codevs.cn/problem/1014/
查看>>
poj 3177 边双联通 **
查看>>
java.lang.UnsupportedOperationException
查看>>
java-斐波那契数列的解法
查看>>
rackup工具
查看>>
Linux operating system (Ubuntu) 学习-1
查看>>
ajax-原生写法步骤
查看>>
.Net语言 APP开发平台——Smobiler学习日志:如何在手机上实现饼图图表
查看>>
svn完整备份迁移
查看>>
Python字典实现分析
查看>>
jenkins+testNG
查看>>