import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * public TreeNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return int整型 */ public int widthOfBinaryTree (TreeNode root) { // write code here if (root == null) { return 0; } Deque<TreeNode> dq = new LinkedList<>(); TreeNode cur = root; dq.offer(cur); int max = 0; while (!dq.isEmpty()) { while (!dq.isEmpty() && dq.peekFirst() == null) { dq.pollFirst(); } while (!dq.isEmpty() && dq.peekLast() == null) { dq.pollLast(); } int size = dq.size(); max = Math.max(max, size); for (int i = 0; i < size; i++) { cur = dq.poll(); if (cur != null) { dq.offerLast(cur.left); dq.offerLast(cur.right); } else { dq.offerLast(null); dq.offerLast(null); } } } return max; } }