2023.6.28
二叉树的层序遍历,需要用到的数据结构是队列。有几个核心点:
- 初始化变量 size,用于记录每层节点的数量。不能直接用que.size(),因为队列的大小是会随时变化的。
- 在内层while循环中,每次先将队头节点的值保存至数组中,再将其弹出队列,最后将其左右孩子节点放入队列中,重复size次。(size记录的是每层节点的数量)。
下面上代码:
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>> ans;
queue<TreeNode*> que;
int size = 0; //用于记录每层节点的数量
if(root == nullptr) return{};
que.push(root);
while(!que.empty())
{
vector<int> v;
size = que.size();
while(size--)
{
TreeNode* node = que.front();
v.push_back(node->val);
que.pop();
if(node->left) que.push(node->left);
if(node->right) que.push(node->right);
}
ans.push_back(v);
}
return ans;
}
};