/** * 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; } };