1.用队列法对二叉树做层次遍历。没什么特别的。

/**
 * 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) {
        // write code here
        vector<vector<int> > res = vector<vector<int>>();
        deque<TreeNode*> queue = deque<TreeNode*>();
        if (root!=nullptr) {
            queue.push_back(root);
        }
        int nextLevelLength = 1;
        while(queue.size()>0) {
            int newNextLevelLength  = 0;
            vector<int> currentLevel = vector<int>();
            for(int i=0;i<nextLevelLength;i++) {
                TreeNode* node = queue.front();
                queue.pop_front();
                if(node->left!=nullptr) {
                    newNextLevelLength++;
                    queue.push_back(node->left);
                }
                if(node->right!=nullptr) {
                    newNextLevelLength++;
                    queue.push_back(node->right);
                }
                currentLevel.push_back(node->val);
            }
            res.push_back(currentLevel);
            nextLevelLength = newNextLevelLength;
        }
        return res;
    }
};