/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};
*/
#include <unistd.h>
#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<vector<int>> Print(TreeNode* pRoot){
vector<vector<int>> ans=creat(pRoot);
for(int i=1;i<ans.size();i+=2){
vector<int> t;
for(int j=ans[i].size()-1;j>=0;j--){
t.push_back(ans[i][j]);
}
ans[i]=t;
}
return ans;
}
};