/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
#include <vector>
class Solution {
public:
vector<vector<int>> creat(TreeNode* pRoot){
vector<vector<int>> ans;
if(pRoot==nullptr){
return ans;
}
vector<int> t(1,pRoot->val);
ans.push_back(t);
vector<vector<int>> vecl=creat(pRoot->left);
vector<vector<int>> vecr=creat(pRoot->right);
for(int i=0;i<vecl.size();i++){
if(i<vecr.size()){
for(int j=0;j<vecr[i].size();j++){
vecl[i].push_back(vecr[i][j]);
}
}
ans.push_back(vecl[i]);
}
if(vecr.size()>vecl.size()){
for(int i=vecl.size();i<vecr.size();i++){
ans.push_back(vecr[i]);
}
}
return ans;
}
vector<int> PrintFromTopToBottom(TreeNode* root) {
vector<vector<int>> ans=creat(root);
vector<int> a;
for(int i=0;i<ans.size();i++){
for(int j=0;j<ans[i].size();j++){
a.push_back(ans[i][j]);
}
}
return a;
}
};