1. Description
Find the maximum width of a binary tree.
2. Solution
BFS.
In every level of the binary tree. Find the first unnull node and the last unnull node. The distance of the two nodes is the width of this level.
Insert all child node of the former range of nodes into the queue, and use the same way to calculate the width of the next level.
3. Code
int widthOfBinaryTree(TreeNode* root) {
int v=0;
queue<TreeNode*>q;
if(!root) return v;
q.push(root);
while(!q.empty()){
int l=q.size();
int s=-1,e=-1;
for(int i=0;i<l;i++){
TreeNode* t=q.front();
q.pop();
q.push(t);
if(t){
if(s==-1)
s=i;
e=i;
}
}
if(s==-1)
break;
if(e-s+1>v)
v=e-s+1;
for(int i=0;i<l;i++){
TreeNode* t=q.front();
q.pop();
if(i>=s&&i<=e){
if(!t){
q.push(NULL);
q.push(NULL);
}
else{
q.push(t->left);
q.push(t->right);
}
}
}
}
return v;
}