c语言层序遍历二叉树
时间: 2024-10-17 11:00:51 浏览: 37
在C语言中,层序遍历也称为广度优先搜索(Breadth First Search,BFS),是一种按层次顺序访问二叉树节点的方法。下面是使用队列数据结构实现层序遍历的基本步骤:
1. **初始化栈或队列**:将根节点放入队列中。
2. **循环遍历**:
- 当队列不为空时,取出队首元素作为当前节点。
- 访问当前节点,并将其左右子节点(如果有)加入到队列的末尾,因为它们代表下一层的节点。
- 重复此过程,直到队列为空,表示已经遍历完所有节点。
以下是C语言的一个简单示例:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node* left;
struct Node* right;
} Node;
// 使用队列辅助函数
void levelOrder(Node* root) {
if (root == NULL) return;
Queue* queue = createQueue(); // 创建并初始化队列
enqueue(queue, root); // 将根节点入队
while (!isEmpty(queue)) {
Node* current = dequeue(queue); // 取出队首节点
printf("%d ", current->data); // 访问节点值
if (current->left != NULL)
enqueue(queue, current->left); // 左子节点入队
if (current->right != NULL)
enqueue(queue, current->right); // 右子节点入队
}
destroyQueue(queue); // 清理队列
}
// 队列相关的创建、删除等函数省略
int main() {
// 构建一个二叉树...
Node* root = ...;
levelOrder(root);
return 0;
}
```
在这个例子中,`createQueue()`、`enqueue()`、`dequeue()` 和 `destroyQueue()` 分别用于队列的创建、入队、出队和销毁操作,你需要自定义这些函数以满足需要。
阅读全文