建立一个队列,存储二叉树的节点,队列中的元素数即为当前层的节点数

/**
 * struct TreeNode {
 *    int val;
 *    struct TreeNode *left;
 *    struct TreeNode *right;
 * };
 */

class Solution {
public:
    /**
     * 
     * @param root TreeNode类 
     * @return int整型vector<vector<>>
     */
    vector<vector<int> > levelOrder(TreeNode* root) {
        vector<vector<int>> res;
        if(!root) return res;
        queue<TreeNode* > q;
        auto p = root;
        q.push(p);
        while(q.size()) {
            int size = q.size();// 记录当前层的二叉树节点数
            vector<int> ans; // 建立一个数组,存储每一层二叉树中的节点的值
            while(size) {
                auto t = q.front(); // 取出队头元素,然后判断其有无左右节点,有的话进入队列
                q.pop();
                size--; 
                ans.push_back(t->val);
                if(t->left)
                    q.push(t->left);
                if(t->right)
                    q.push(t->right);
            }
            res.push_back(ans); // 将一层的节点的值进入res
        }
        return res;
    }
};