给你二叉树的根节点 root
,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
输入:root = [3,9,20,null,null,15,7]
输出:[[3],[9,20],[15,7]]
输入:root = [1]
输出:[[1]]
输入:root = []
输出:[]
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>> result; // 存储层序遍历的结果
if (root == NULL) {
return result; // 如果根节点为空,直接返回空的结果
}
queue<TreeNode*> q;
q.push(root); // 将根节点放入队列中
// 开始进行层序遍历
while (!q.empty()) {
int level_size = q.size(); // 获取当前层级的节点数量
vector<int> level_values; // 存储当前层级节点的值
// 遍历当前层级的节点
for (int i = 0; i < level_size; i++) {
TreeNode* node = q.front();
q.pop(); // 出队
level_values.push_back(node->val); // 存储当前节点的值
// 将当前节点的子节点(如果存在)加入队列中
if (node->left) {
q.push(node->left);
}
if (node->right) {
q.push(node->right);
}
}
result.push_back(level_values); // 将当前层级的节点值存入最终结果中
}
return result;
}
};