4. Identify the bug in this C code snippet for calculating maximum width of a binary tree:
unsigned int maximumWidth(struct TreeNode* root) {
if (!root) return 0;
unsigned int maxWidth = 0;
QueueNode* queue = createQueue();
enqueue(queue, root, 0);
while (!isEmpty(queue)) {
unsigned int size = queueSize(queue);
unsigned int firstIndex = queueFrontIndex(queue);
unsigned int lastIndex = queueBackIndex(queue);
maxWidth = max(maxWidth, lastIndex - firstIndex + 1);
for (unsigned int i = 0; i < size; i++) {
QueueNode* curr = dequeue(queue);
if (curr->node->left) enqueue(queue, curr->node->left, 2 * curr->index);
if (curr->node->right) enqueue(queue, curr->node->right, 2 * curr->index + 1);
}
}
return maxWidth;
}