- 二维数组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;
}
};