class Solution { public: /*void traverse(TreeNode* root, vector<vector<int>>& res, int depth) { if(root){ //新的一层 ---if(res.size() < depth) res.push_back(vector<int>{}); //vector从0开始计数因此减1,在节点当前层的vector中插入节点 res[depth - 1].push_back(root->val); } else return; //递归左右时进入下一层 traverse(root->left, res, depth + 1); traverse(root->right, res, depth + 1); } */ vector<vector<int> > levelOrder(TreeNode* root) { /*vector<vector<int> > res; if(root == NULL) //如果是空,则直接返回空vector return res; traverse(root, res, 1); return res;*/ vector<vector<int>> res; if(root==nullptr) return res; queue<TreeNode*> q; q.push(root); while(!q.empty()) { int l=q.size(); vector<int> cur; for(int i=0;i<l;i++) { TreeNode* node=q.front(); q.pop(); cur.push_back(node->val); if(node->left) q.push(node->left); if(node->right) q.push(node->right); } res.push_back(cur); } return res; } };