/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param pRoot TreeNode类 * @return int整型vector<vector<>> */ vector<vector<int> > Print(TreeNode* pRoot) { if(!pRoot)return {}; vector<vector<int>> res; queue<TreeNode*> q; q.push(pRoot); int level = 0; while(!q.empty()){ //队列实现层序遍历,size记录当前层大小用于内层循环,即层的遍历次数, vector<int> arr; int size = q.size(); for(int i=0; i<size; i++){ TreeNode *temp = q.front();q.pop(); if(!temp)continue; q.push(temp->left); q.push(temp->right); arr.push_back(temp->val); } if(arr.empty())continue; if(level%2){ reverse(arr.begin(),arr.end()); //使用level偶奇记录正反顺序; } level++; res.push_back(arr); } return res; } };