🧩Algo 二叉树
102. 二叉树的层序遍历
难度:🟡 Medium | 标签:树、BFS | 状态:⬜ LeetCode 链接
思路
队列 BFS。每层循环开始记录当前队列 size,只处理这 size 个为一层。
代码
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>> res;
if (!root) return res;
queue<TreeNode*> q;
q.push(root);
while (!q.empty()) {
int sz = q.size();
vector<int> level;
level.reserve(sz);
for (int i = 0; i < sz; ++i) {
auto* x = q.front(); q.pop();
level.push_back(x->val);
if (x->left) q.push(x->left);
if (x->right) q.push(x->right);
}
res.push_back(std::move(level));
}
return res;
}
};
复杂度
- 时间 O(n),空间 O(n)
易错 / 回顾
- 用
sz锁定当前层范围是关键 - 子节点入队前判 nullptr
- Z 字遍历 / 右视图 / 锯齿都是此模板的变种
Related · 二叉树