/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: vector<vector<int>> levelOrder(TreeNode* root) { vector<vector<int>> v1; if(root==NULL){//首先判断根节点是否为空 return v1; } queue<TreeNode*> q; q.push(root); while(!q.empty()){ int count = q.size();//当下面的循环结束一次,此时queue中的所有结点刚好是下一层的是所有结点,计算数量。 vector<int> v; while(count > 0){//这个循环完,就相当于一层结束。 TreeNode* cur = q.front(); v.push_back(cur->val);//要是没有前面判断root根节点是否为空的操作,当根节点为空时,这一步就会出现空指针现象。 q.pop(); if(cur->left != NULL){ q.push(cur->left); } if(cur->right != NULL){ q.push(cur->right); } count--; } v1.push_back(v); } return v1; } };