1. 题目描述
2. 思路分析
3. 代码展示
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
queue<TreeNode*> q;
vector<vector<int>> ret;
TreeNode* cur = root;
if(root) {
//根结点不为空, 则入队
q.push(root);
}
//当队列不为空时, 进行循环
while(!q.empty()) {
//先获取队列中元素个数(即这一层元素的个数)
int size = q.size();
vector<int> row;
while(size--) {
//获取队头元素,出队,并把值存入数组 (注意队列里面存的是指针, 而不是int值)
cur = q.front();
q.pop();
row.push_back(cur->val);
//如果有左右孩子, 把孩子入队
if(cur->left)
q.push(cur->left);
if(cur->right)
q.push(cur->right);
}
//上述循环走完, 此时数组row中存的就是一层的数据
ret.push_back(row);
}
return ret;
}
};