层次遍历借助队列。
class Solution {
public:
    vector<vector<int> > levelOrder(TreeNode* root) {
        vector<vector<int> > res;//因为后面是按层添加的。row是vector<int>  row
        if(root == NULL)
            //如果是空,则直接返回空vector fast-template
            return res;
        //队列存储,进行层次遍历
        queue<TreeNode*> q;//队列
        q.push(root);
        TreeNode* cur;//当前正在操作的结点(包括出队,以及加入孩子结点)
        while(!q.empty()){
            //记录二叉树的某一行
            vector<int> row;
            int n = q.size();
            //因先进入的是根节点,故每层结点多少,队列大小就是多少
            for(int i = 0; i < n; i++){
                cur = q.front();//当前指向(记录)队列的第一个
                q.pop();//第一个元素出队
                row.push_back(cur->val);//出队并记录当前结点value
                //若是左右孩子存在,则存入左右孩子作为下一个层次
                if(cur->left)
                    q.push(cur->left);
                if(cur->right)
                    q.push(cur->right);
            }
            //每一层加入输出
            res.push_back(row);
        }
        return res;}
};