总结:
1. 注意 cnt-- 的位置以及 level push 的位置
2. II 在 1 的基础上加个 stack 或者直接 reverse 都可以
代码:
class Solution {
public:
vector<vector<int> > levelOrder(TreeNode *root) {
vector<vector<int> > res;
if(root == NULL)
return res;
queue<TreeNode*> record;
vector<int> level;
int cnt = 1, nextcnt = 0;
record.push(root);
while(!record.empty()) {
TreeNode * tn = record.front();
record.pop();
level.push_back(tn->val);
if(tn->left) {
record.push(tn->left);
nextcnt += 1;
}
if(tn->right) {
record.push(tn->right);
nextcnt += 1;
}
cnt --;
if(cnt == 0) {
cnt = nextcnt;
nextcnt = 0;
// push_back
res.push_back(level);
level.clear();
}
}
return res;
}
};