• 二维数组vector< vector>arr的插入数据:不能用arr[0].push_back(val)这种方式,而是要先简历一个临时一维数组,把数插入,再把这个临时数组差入到二维数组里
  • 层序遍历,使用队列先进先出,两层while循环:
    • 第一层:当队列不为空时
    • 第二层:当目前所在层未遍历完时
class Solution {
public:
    /**
     * 
     * @param root TreeNode类 
     * @return int整型vector<vector<>>
     */
    vector<vector<int> > levelOrder(TreeNode* root) {
        // write code here
        queue<TreeNode*> Q;
        vector<vector<int> >ret;
        int level = 0; //记录层数
        if(!root) return ret;
        Q.push(root);
        while(!Q.empty()){
             int num = Q.size();//记录本层节点个数
             vector<int> tmp;//存储本层节点值
             while(num>0){
                TreeNode* node = Q.front();
                Q.pop();
                //ret[level].push_back(node->val);//不能这样做
                 tmp.push_back(node->val);
                if(node->left){
                    Q.push(node->left);
                }
                if(node->right){
                    Q.push(node->right);
                }
                 num--;
             }
            ret.push_back(tmp);
            level++;//进入下一层
        }
        return ret;
        
    }
};