662. 二叉树最大宽度:
题目链接 :111. 二叉树的最小深度
题目:
给定一个二叉树,编写一个函数来获取这个树的最大宽度。树的宽度是所有层中的最大宽度。这个二叉树与满二叉树(full binary tree)结构相同,但一些节点为空。
每一层的宽度被定义为两个端点(该层最左和最右的非空节点,两端点间的null节点也计入长度)之间的长度。
思路:
- BFS+完全二叉树性质
- 需要维护两个集合,依然是使用双向队列存储层序中每层的节点,对其左右节点的序号差与初始化的最大宽度之间做比较。
- 特别注意:对比层内节点数小于2的,不需要进行差值运算。
AC代码:
/**
* 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) {
Deque<TreeNode