/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* };
*/
class Solution {
public:
vector< vector<int> > ans;
vector< int > temp;
vector<vector<int> > levelOrder(TreeNode* root) {
if(!root){
return {};
}
queue<TreeNode*> q;
q.push(root);
int size = 1;
int new_size = 0;
while (!q.empty()) { //因为结果需要二维向量,每一层一个向量,使用了双层循环,内层添加一层的值,外层进行添加进ans,更新下一层的节点数,清空temp准备记录下一层;
while ( size > 0 ) {
TreeNode* node = q.front();q.pop();
temp.push_back(node->val);
if (node->left) {
q.push(node->left);
new_size++;
}
if (node->right) {
q.push(node->right);
new_size++;
}
size--;
}
size = new_size;
new_size = 0;
ans.push_back(temp);
temp.clear();
}
return ans;
}
};