层序遍历是一种广度优先搜索(BFS)的遍历方式,它按照从上到下、从左到右的顺序访问二叉树的所有节点。我们可以使用队列来实现层序遍历。
具体步骤如下:
- 创建一个空队列,将根节点入队。
- 当队列不为空时,执行以下操作: a. 出队一个节点,访问该节点的值。 b. 如果该节点有左子节点,将左子节点入队。 c. 如果该节点有右子节点,将右子节点入队。
- 重复步骤2,直到队列为空。
// 层序遍历函数
void levelOrderTraversal(TreeNode* root) {
if (root == NULL) return; // 如果根节点为空,直接返回
queue<TreeNode*> q; // 创建一个队列
q.push(root); // 将根节点入队
while (!q.empty()) { // 当队列不为空时
TreeNode* node = q.front(); // 取出队首节点
q.pop(); // 弹出队首节点
cout << node->val << " "; // 访问当前节点的值
if (node->left != NULL) { // 如果当前节点有左子节点
q.push(node->left); // 将左子节点入队
}
if (node->right != NULL) { // 如果当前节点有右子节点
q.push(node->right); // 将右子节点入队
}
}