递归思想,用一个队列维护每一次递归的树节点,每打印一个值的同时就把他的左孩子和右孩子(如果不是nllptr的话)添加到队列里。为了保证层次性,每循环一层之前都要获得队列的size()

/**
 * 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> > ans;
        if(!root) return ans;
        queue<TreeNode*> que;
        que.push(root);
        while(!que.empty())
        {
            int len = que.size();
            vector<int> vec;
            while(len--)
            {
                TreeNode* temp = que.front();
                vec.push_back(temp->val);
                que.pop();
                if(temp->left) que.push(temp->left);
                if(temp->right) que.push(temp->right);
            }
            ans.push_back(vec);
        }
        return ans;
    }
};