作者:也曾悲摧过_192 | 来源:互联网 | 2024-11-23 12:14
/*
* @lc app=leetcode.cn id=102 lang=cpp
*/
// 定义二叉树节点结构
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
class Solution {
public:
// 主函数,返回二叉树的层次遍历结果
std::vector> levelOrder(TreeNode* root) {
std::vector> result;
if (root == nullptr) return {};
std::queue queue;
queue.push(root);
while (!queue.empty()) {
std::vector levelValues;
int levelSize = queue.size(); // 当前层的节点数量
for (int i = 0; i TreeNode* currentNode = queue.front();
queue.pop();
levelValues.push_back(currentNode->val);
if (currentNode->left != nullptr) queue.push(currentNode->left);
if (currentNode->right != nullptr) queue.push(currentNode->right);
}
result.push_back(levelValues);
}
return result;
}
};
在这个解决方案中,我们使用了一个队列来辅助完成层次遍历。每次处理一层时,先计算该层的节点数,然后依次处理这些节点,并将它们的子节点加入队列,以便在后续循环中处理。通过这种方式,我们可以逐层地访问二叉树的所有节点,最终得到一个二维向量,其中每个一维向量代表树的一层。