Max width of binary tree
class Solution {
public int widthOfBinaryTree(TreeNode root) {
if (root == null) {
return 0;
}
Queue<Pair<TreeNode, Integer>> queue = new LinkedList<>();
queue.offer(new Pair<>(root, 1));
int maxWidth = 1;
while (!queue.isEmpty()) {
int levelSize = queue.size();
int minIndex = queue.peek().getValue();
for (int i = 0; i < levelSize; i++) {
Pair<TreeNode, Integer> nodePair = queue.poll();
TreeNode node = nodePair.getKey();
int index = nodePair.getValue();
if (node.left != null) {
queue.offer(new Pair<>(node.left, 2 * index));
}
if (node.right != null) {
queue.offer(new Pair<>(node.right, 2 * index + 1));
}
maxWidth = Math.max(maxWidth, index - minIndex + 1);
}
}
return maxWidth;
}
}Last updated