/**
* 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> > Print(TreeNode* pRoot) {
if(!pRoot){
return {};
}
vector< vector<int> > ans;
queue< TreeNode* > q;
q.push(pRoot);
int size = 1;
while(!q.empty()){
int new_size=0;
vector< int > 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--;
}
ans.push_back(temp); //一层完成之后,加入
size = new_size;
}
return ans;
}
};