void levelOrderTraversal(TreeNode* root) { if (!root) return; queue<TreeNode*> q; q.push(root); while (!q.empty()) { int size = q.size(); for (int i = 0; i < size; i++) { TreeNode* cur = q.front(); q.pop(); cout << cur->val << " "; if (cur->left) q.push(cur->left); if (cur->right) q.push(cur->right); } cout << endl; } }1请逐行注释
时间: 2024-03-15 17:47:12 浏览: 51
BiTreeOrder.rar_BiTreeOrder_创建二叉树
以下是逐行注释过后的代码:
```c++
void levelOrderTraversal(TreeNode* root) {
if (!root) return; // 如果根节点为空,直接返回
queue<TreeNode*> q; // 创建一个队列
q.push(root); // 将根节点入队
while (!q.empty()) { // 队列不为空时循环
int size = q.size(); // 获取当前队列的大小,即当前层的节点数
for (int i = 0; i < size; i++) { // 遍历当前层的所有节点
TreeNode* cur = q.front(); // 取出队头节点
q.pop(); // 将队头节点出队
cout << cur->val << " "; // 输出当前节点的值
if (cur->left) q.push(cur->left); // 如果当前节点的左子节点不为空,将其入队
if (cur->right) q.push(cur->right); // 如果当前节点的右子节点不为空,将其入队
}
cout << endl; // 输出换行符,表示当前层遍历结束
}
}
```
该函数实现了二叉树的层序遍历,使用队列来实现,每次遍历一层节点,先将该层节点入队,然后遍历队列中的所有节点,依次取出队头节点并输出其值,如果该节点有左右子节点,则将其左右子节点入队,直到队列为空。
阅读全文