/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
class Solution {
public:
/**
*
* @param root TreeNode类
* @return int整型vector<vector<>>
*/
vector<vector<int> > levelOrder(TreeNode* root) {
queue<TreeNode*>q;
vector<int>result;
q.push(root);
while(!q.empty())
{
TreeNode*k=q.front();
q.pop();
if(k!=nullptr)result.push_back(k->val);
else {
result.push_back(0xcccc);
continue;
}
q.push(k->left);
q.push(k->right);
}
for(auto x:result)cout<<x<<" ";
cout<<endl;
vector<vector<int>>ans;
int len=result.size()-1,cnt=1,present=0;
while(present<=len)
{
vector<int>temp;
int count=0;
for(int i=0;i<cnt&&present<=len;i++)
if(result[present]!=0xcccc)temp.push_back(result[present++]);
else present++,count++;
if(temp.size())ans.push_back(temp);
cnt-=count;
cnt*=2;
}
return ans;
}
};