vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>>res;
vector<int>level;
if(root == NULL)
return res ;
TreeNode* cur ;
queue<TreeNode*>q;
q.push(root);
q.push(NULL);
while(!q.empty()){
cur = q.front();
q.pop();
if(cur!=NULL){
level.push_back(cur->val);
if(cur->left!=NULL) q.push(cur->left);
if(cur->right!=NULL)q.push(cur->right);
}
else {
res.push_back(level);
level.clear();
if( !q.empty()&&q.front()!=NULL)
q.push(NULL);
}
}
return res;
}
vector<vector<int>>res;
vector<int>level;
if(root == NULL)
return res ;
TreeNode* cur ;
queue<TreeNode*>q;
q.push(root);
q.push(NULL);
while(!q.empty()){
cur = q.front();
q.pop();
if(cur!=NULL){
level.push_back(cur->val);
if(cur->left!=NULL) q.push(cur->left);
if(cur->right!=NULL)q.push(cur->right);
}
else {
res.push_back(level);
level.clear();
if( !q.empty()&&q.front()!=NULL)
q.push(NULL);
}
}
return res;
}