class Solution {
public:
        vector<vector<int> > res;
        int max=0;   //max记录树的深度
        void findt(TreeNode* p,int t){   //判断树的深度
            if(p==NULL) return;
            findt(p->left,t+1);
            findt(p->right,t+1);
            if(t>max) max=t;
            return;
        }

        void insert(TreeNode* p,int h){   //每层的val按从左往右插入对应容器
            if(p==NULL) return; 
            res[h].push_back(p->val);     //插入
            insert(p->left,h+1);
            insert(p->right,h+1);
            return;
        }

        vector<vector<int> > Print(TreeNode* pRoot) {
            int h=0,t=1;//t用来先判断树的深度
            findt(pRoot,t);//判断深度递归
            res.resize(max);  //有多少层就定义几个小容器
            insert(pRoot,h);//递归插入
            return res;
        }
    
};