vector<vector<int> > Print(TreeNode* pRoot) {
vector<vector<int> > ret;
if(!pRoot)
return ret;
queue<TreeNode*> q;
q.push(pRoot);
int cnt = 0;
int base = 1;
vector<int> tmp;
for(int i = 0;i <4096;i ++)
{
TreeNode* p = q.front();
q.pop();
cnt ++;
if(p)
tmp.push_back(p->val);//cout<<p->val<<" ";
if(cnt==base)
{
cnt = 0;
base = (base<<1);
// cout<<endl;
if(tmp.size()!= 0)
{
vector<int> t;
for(int i= 0;i < tmp.size();i ++)
{
t.push_back(tmp[i]);
}
ret.push_back(t);
tmp.clear();
}
}
if(p)
{
q.push(p->left);
q.push(p->right);
}else
{
q.push(NULL);
q.push(NULL);
}
}
return ret;
}