这个题目里面出现了一个比较大的问题就是二维的vector没有初始化的时候你如果使用它就会出现问题。
eg vector<vector<int>> ans;
ans[0].push_back(1);
this is the wrong type, because you still don't have the ans[0];
pay attention here.
/**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
vector<vector<int> > levelOrder(TreeNode *root) {
vector<vector<int>> ans;
if(root == NULL)
return ans;
int count = 1;//count is the number of each layer
//two
queue<TreeNode *> q;
q.push(root);
vector<int> cur(0);
while(!q.empty())
{
cur.clear();
int tmp = 0;
for(int i = 0;i< count;i++)
{
root = q.front();
cur.push_back(root->val);
q.pop();
if(root->left!= NULL)
{
q.push(root->left);
tmp++;
}
if(root->right!= NULL)
{
q.push(root->right);
tmp++;
}
}
count = tmp;//sb clear your mind and focus on the logic
ans.push_back(cur);
}
return ans;
}
};