代码:
public int widthOfBinaryTree(TreeNode root) {
if (root == null) return 0;
Queue<TreeNode> queue = new LinkedList<>();
LinkedList<Integer> list = new LinkedList<>();
queue.offer(root);
list.add(1);
int size = 0;
int max = 1;
while (!queue.isEmpty()) {
size = queue.size();
for (int i = 0; i < size; i++) {
TreeNode poll = queue.poll();
int index = list.removeFirst();
if (poll.left != null) {
queue.offer(poll.left);
list.add(index * 2);
}
if (poll.right != null) {
queue.offer(poll.right);
list.add(index * 2 + 1);
}
}
if (list.size() >= 2) {
max = Math.max(max, list.getLast() - list.getFirst() + 1);
}
}
return max;
}